为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

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

如何返回 XML 数据?

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

加入 XML 工具依赖

com.fasterxml.jackson.dataformatjackson-dataformat-xml

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

com.fasterxml.jackson.dataformatjackson-dataformat-xml2.9.5compilejcl-over-slf4jorg.slf4jtrue

可以看到 true,所以,只要手动显示加下这个依赖就行了,关于这个标签可以点击这里查看这篇文章。

返回 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 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” 可获取更多,转载请原样保留本信息。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.4万
获赞与收藏
1957

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消