https://segmentfault.com/a/1190000017511114

如何返回 XML 数据?

那么如何返回 XML 格式数据呢?实在很大略!

php返回xml数据Spring Boot 返回 XML 数据一分钟搞定 SQL

加入 XML 工具依赖

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

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

<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 区域输出数据。

2)定义返回类型

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

@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#readValuecom.fasterxml.jackson.dataformat.xml.XmlMapper#writeValuecom.fasterxml.jackson.databind.ObjectMapper#writeValueAsString

更多干系的利用及事理可以查看这个包。

好了,Spring Boot 返回 XML 格式数据便是这么大略!