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;
    }
    
    
  • 相关阅读:
    python学习笔记 | 国内常用源镜像地址
    python学习笔记 | macOS Big Sur动态壁纸食用指南
    GitHub README.md文本编写指南
    FAT32、NTFS、exFAT有什么区别?
    python模块详解 | unittest(单元测试框架)(持续更新中)
    Linux学习笔记 | 常见错误之账户密码正确但是登录不进去系统
    数学建模学习笔记 | matlab基本命令及用法
    selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
    JAVA集合框架
    JAVA集合框架
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/13827401.html
Copyright © 2011-2022 走看看