美文网首页我爱编程
springBoot返回xml格式结果

springBoot返回xml格式结果

作者: 雨中的单车 | 来源:发表于2017-05-20 10:10 被阅读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

    相关文章

      网友评论

        本文标题:springBoot返回xml格式结果

        本文链接:https://www.haomeiwen.com/subject/xzwuxxtx.html