Spring Boot 返回 XML 数据,一分钟搞定!

Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,因此这一块代码就不贴了,能够点击查看以前分享的 Spring Boot 返回 JSON 数据,一分钟搞定!html

你所需具有的基础

更多请在Java技术栈微信公众号后台回复关键字:boot。java

如何返回 XML 数据?

那么如何返回 XML 格式数据呢?其实很简单!web

加入 XML 工具依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

不用带版本号,由于在 spring-webmvc 包中已经定义好了,只是没有把依赖传递过来而已,以下面源码所示。spring

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-xml</artifactId>
  <version>2.9.5</version>
  <scope>compile</scope>
  <exclusions>
    <exclusion>
      <artifactId>jcl-over-slf4j</artifactId>
      <groupId>org.slf4j</groupId>
    </exclusion>
  </exclusions>
  <optional>true</optional>
</dependency>

能够看到 <optional>true</optional>,因此,只要手动显示加下这个依赖就好了,关于这个标签能够点击这里查看这篇文章。微信

返回 XML 数据格式定义

1)定义返回方式

在 Controller 类上面用 @RestController 定义或者在方法上面用 @ResponseBody 定义,代表是在 Body 区域输出数据。mvc

2)定义返回类型

此时 Content-Type 默认为 application/xhtml+xml;charset=UTF-8 格式,能够手动改变下类型:application/xml;charset=UTF-8app

@RequestMapping(value = "/test" produces = MediaType.APPLICATION_XML_VALUE)

代表是用 application/xml 格式输出数据。工具

3)定义输出格式

控制层方法直接返回对象,对象会自动转换为 XML 格式,不过是默认的标签,能够经过如下标签进行自定义 XML 格式。源码分析

@JacksonXmlRootElement(localName = "response")
public class UserXmlVO {

    @JacksonXmlProperty(localName = "user_name")
    private String name;

    @JacksonXmlElementWrapper(useWrapping = false)
    @JacksonXmlProperty(localName = "order_info")
    private List<OrderInfoVO> orderList;
    
    // get set 略
    
}

上面演示了几个经常使用的注解。学习

@JacksonXmlRootElement: 用在类上,用来自定义根节点名称;

@JacksonXmlProperty: 用在属性上,用来自定义子节点名称;

@JacksonXmlElementWrapper: 用在属性上,能够用来嵌套包装一层父节点,或者禁用此属性参与 XML 转换。

更多注解能够查看这个包:

如何手动完成对象XML 的互转?

jackson-dataformat-xml 这个包里面有一个 com.fasterxml.jackson.dataformat.xml.XmlMapper 类,该类继承父类 com.fasterxml.jackson.databind.ObjectMapper,能够利用它来完成互转操做。

下面是几个参考方法:

com.fasterxml.jackson.dataformat.xml.XmlMapper#readValue
com.fasterxml.jackson.dataformat.xml.XmlMapper#writeValue
com.fasterxml.jackson.databind.ObjectMapper#writeValueAsString

更多相关的使用及原理能够查看这个包。

好了,Spring Boot 返回 XML 格式数据就是这么简单,有什么不懂的能够关注下面的Java技术栈微信公众号和你们一块儿学习讨论。

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "boot" 可获取更多,转载请原样保留本信息。

相关文章
相关标签/搜索