zoukankan      html  css  js  c++  java
  • SpringBoot--整合XML格式数据传输

    SpringBoot--整合XML格式数据传输

    现在前后端交互都使用json格式,但是在某些特定领域,还是要求使用xml格式数据进行传输。

    在前台传输到后台的xml格式数据,可以将其封装到pojo实体类中,也可以将pojo实体类响应回xml格式的数据。

    1、导入依赖

      <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    <!--xml和实体类转换的依赖-->
    	<dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
                <version>2.9.8</version>
            </dependency>
    
    
    

    2、实体类

    如果需要对类名、字段和xml数据节点之间进行映射,可以使用注解。

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

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

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

    //实体类,getter、setter已省略
    public class User implements Serializable {
    
        private String name;
        private Integer id;
        private String sex;
        private Integer age;
    }
    
    
    

    3、转换控制器

    @RestController
    public class XMLController {
    
        //application/xml 指定返回xml格式的数据,此处不指定默认使用json
        @PostMapping(value = "/xml",produces = "application/xml;charset=UTF-8")
        public User xml(@RequestBody User users){
            System.out.println(users);
            return users;
        }
    }
    

    测试如图

    SpringBoot返回数据的时候会默认使用实体类名(非全类名)作为根节点。

    但是没做映射,那么入参根节点必须使用全类名,否则不识别。

    使用注解起别名,那就能被识别。

    //实体类,getter、setter已省略
    @JacksonXmlRootElement(localName = "User")
    public class Person {
        private String name;
        private Integer id;
        private String sex;
    }
    
    
  • 相关阅读:
    Android JNI与多线程
    V8 API Reference Guide
    V8引擎嵌入指南
    google v8引擎常见问题
    Android单例模式
    setTimeout和setInterval
    Android ANR
    android全屏
    Android进程和线程(Android开发指南--译)
    ubuntu下一次网络流量危机
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/13827401.html
Copyright © 2011-2022 走看看