spring mvc 如何返回xml格式的数据?

如题,万分感谢

使用spring3.0以上版本
在web.xml中设置

XX
org.springframework.web.servlet.DispatcherServlet
1

<servlet-mapping>
    <servlet-name>XX</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>XX</servlet-name>
    <url-pattern>*.json</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>XX</servlet-name>
    <url-pattern>*.xml</url-pattern>
</servlet-mapping>

在XX-servlet.xml中设置





























[code="java"]response.setContentType("application/xml");[/code]
然后把xml内容写到response的outputStream里就可以了。

把对象转换成xml和spring mvc没啥关系吧,如果你这数据是从数据库里面来的可以考虑直接让数据库返回xml,sql server和oracle都有这样的语句

[b]Controller层[/b]

[code="java"] // Jaxb2RootElementHttpMessageConverter (requires JAXB2 on the classpath - useful for serving clients that expect to work with XML)

@RequestMapping(value="/xml", method=RequestMethod.POST)
public @ResponseBody String readXml(@RequestBody JavaBean bean) {
    return "Read from XML " + bean;
}

@RequestMapping(value="/xml", method=RequestMethod.GET)
public @ResponseBody JavaBean writeXml() {
    return new JavaBean();
}[/code]

[b]JSP [/b]

[code="java"]

Jaxb2RootElementHttpMessageConverter




  • " method="post">





  • ">Write XML

[/code]
[b]还有javascript[/b]
[code="java"]$("#readXml").submit(function() {
var form = $(this);
var button = form.children(":first");
$.ajax({ type: "POST", url: form.attr("action"), data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>barapple", contentType: "application/xml", dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});
return false;
});
$("#writeXml").click(function() {
    var link = $(this);
    $.ajax({ url: link.attr("href"),
        beforeSend: function(req) { 
            req.setRequestHeader("Accept", "application/application+xml");
        },
        success: function(xml) {
            MvcUtil.showSuccessResponse(MvcUtil.xmlencode(xml), link);
        },
        error: function(xhr) { 
            MvcUtil.showErrorResponse(xhr.responseText, link);
        }
    });
    return false;
});     

[/code]