我正在尝试在Spring中将对象作为XML返回,就像这个指南中所示:http://spring.io/guides/gs/rest-service/。但是我希望该对象以XML而不是JSON的形式返回。有人知道我该如何做吗?Spring是否有任何依赖项可以轻松地为XML执行此操作?还是说我需要使用一个marshaller,然后以其他方式返回XML文件?
Spring默认支持JSON,但若要支持XML,请按以下步骤操作 -
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD) => this is important, don't miss it.
public class Response {
@XmlElement
private Long status;
@XmlElement
private String error;
public Long getStatus() {
return status;
}
public void setStatus(Long status) {
this.status = status;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}, produces = {"application/xml", "application/json"})
公共的
public Response produceMessage(@PathVariable String topic, @RequestBody String message) {
return new Response();
}
@XmlRootElement
和@XmlElement
,那么它应该将其转换为xml格式。当Spring看到以下情况时,它将把bean转换为xml:
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/
HttpMessageConverter
,那么仅使用@ResponseBody
是不够的。基本上,Spring将使用它找到的第一个可以执行转换的转换器。一种安全的方法是返回带有MediaType.APPLICATION_XML
的ResponseEntity
。 - Sotirios Delimanolis