5

我试图在春天将一个对象作为 XML 返回,就像本指南一样:http ://spring.io/guides/gs/rest-service/

除了我希望对象以 xml 而不是 JSON 的形式返回。

有谁知道我该怎么做?Spring 是否有任何依赖项可以轻松地为 XML 做到这一点?或者,我是否需要使用编组器,然后以其他方式返回 xml 文件?

4

2 回答 2

11

Spring 默认支持 JSON,但要支持 XML,请执行以下步骤 -

  1. 在您计划作为响应返回的类中,添加 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;
        }
    }
  1. 在下面的 restful 方法上将生产和消费添加到您的@RequestMapping,这有助于确保您支持什么样的响应和请求,如果您只想将响应作为 xml,只需将生产 =“application/xml”。
@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}, produces = {"application/xml", "application/json"})

上市

  1. 然后,确保从您的方法调用返回响应对象,如下所示,您可以在返回类型之前添加@ResponseBody,但根据我的经验,没有它我的应用程序运行良好。
public Response produceMessage(@PathVariable String topic, @RequestBody String message) {
    return new Response();
}
  1. 现在,如果您支持多种生产类型,那么基于客户端在 HTTP 请求标头中作为Accept发送的内容,spring restful 服务将返回该类型的响应。如果您只想支持 xml,那么只生成 'application/xml' 并且响应将始终为 xml。
于 2015-05-12T20:57:20.673 回答
8

如果您在 bean 中使用 JAXB 注释进行定义@XmlRootElement@XmlElement那么它应该将其编组为 xml。Spring 将在看到时将 bean 编组为 xml:

  • 使用 JAXB 注释的对象
  • 类路径中存在 JAXB 库
  • “mvc:annotation-driven”已启用
  • 使用 @ResponseBody 注释的返回方法

按照此示例了解更多信息:

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/

于 2013-09-20T15:53:27.430 回答