我爱编程

springBoot返回xml格式结果

2017-05-20  本文已影响0人  雨中的单车

虽然现在json已经相当普及了,但是开发过程中总会存在些向后兼容的问题,所以有时候接口需要xml返回结果又不可避免,这里说明一下如何让springBoot应用返回xml格式结果。

超级简单只需要两步:

第一步,在build.gradle配置文件中增加以下配置(如果使用maven请在对应的pom.xml配置对应信息)

compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.8.8'

第二步,在我们的restControler类对应方法中增加@RequestMapping(value="/getProductionDictX",produces = {"application/xml","application/json"})

publicMessage getProductionDictX(){

其中{"application/xml","application/json"}表示可以返回xml格式或者json格式

此时我们在浏览器中输入http://localhost:8082/getProductionDict.xml,即可以返回xml格式数据

输入http://localhost:8082/getProductionDict.json返回json格式数据。

此处有一个待解决问题,就是如果返回xml格式数据需要以下类似头信息

<?xml version="1.0" encoding="UTF-8"?>

<Message xmlns="http://nm.cmc.com/CSCS/BW/BWMethod/BW00001/">

是无法得到的。

此处如果引入compilegroup:'org.codehaus.woodstox',name:'woodstox-core-asl',version:'4.4.1'包

并在对应值对象所在目录中增加package-info.java文件,在文件中增加如下信息

@XmlSchema(

namespace ="http://nm.cmc.com/CSCS/BW/BWMethod/BW00001/",

elementFormDefault = XmlNsForm.QUALIFIED)

packagecom.esop.productInfo.design.dto;

importjavax.xml.bind.annotation.XmlNsForm;

importjavax.xml.bind.annotation.XmlSchema;

在对应的值对象类中要增加@XmlRootElement注解,如下

importjavax.xml.bind.annotation.XmlRootElement;

@XmlRootElement

public classEp_prd_production_dict {

此时再访问服务地址会增加xmlns信息。结果如下

但是仍然无法解决<?xml version="1.0" encoding="UTF-8"?>这个头信息。

使用woodstox-core-asl还有一个问题,就是返回结果如果是List对象时转换成xml格式文件时会报错,所以如果返回结果是多条记录时此处不能用List对象直接返回。

参考文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html

http://www.jianshu.com/p/4477efb1accf

上一篇下一篇

猜你喜欢

热点阅读