当前位置: 首页 > news >正文

spring boot中使用xml请求

spring boot 中使用xml请求

  1. 先在pom文件中引入依赖包
    <dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.9.0</version>
    </dependency>
  2. 编写请求实体
    package com.scai.perfirmance.request;


    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
    import com.scai.perfirmance.bean.User;

    import java.util.List;

    @JacksonXmlRootElement(localName = "message")
    public class UserRequest {


    private List<User> userList;

    @JacksonXmlElementWrapper(localName = "userlist")
    @JacksonXmlProperty(localName = "user")
    public List<User> getUserList() {
    return userList;
    }

    public void setUserList(List<User> userList) {
    this.userList = userList;
    }
    }
    package com.scai.perfirmance.bean;

    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;


    public class User {
    @JacksonXmlProperty(localName = "idcard")
    private String idCard;
    @JacksonXmlProperty(localName = "username")
    private String name;
    @JacksonXmlProperty(localName = "sex")
    private String sex;
    @JacksonXmlProperty(localName = "age")
    private int age;



    public String getIdCard() {
    return idCard;
    }

    public void setIdCard(String idCard) {
    this.idCard = idCard;
    }


    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }


    public String getSex() {
    return sex;
    }

    public void setSex(String sex) {
    this.sex = sex;
    }


    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }


    }
  3. 返回实体
    package com.scai.perfirmance.response;

    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

    import java.util.List;

    @JacksonXmlRootElement(localName = "message")
    public class UserResponse {

    private List<UserRes> userResList;

    @JacksonXmlElementWrapper(localName = "userreslist")
    // @JacksonXmlElementWrapper(useWrapping = false) // 禁用该属性参与xml转换
    @JacksonXmlProperty(localName = "userres")
    public List<UserRes> getUserResList() {
    return userResList;
    }

    public void setUserResList(List<UserRes> userResList) {
    this.userResList = userResList;
    }



    }
    package com.scai.perfirmance.response;

    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    import com.scai.perfirmance.bean.User;

    public class UserRes extends User {

    private String salary;

    @JacksonXmlProperty(localName = "salary")
    public String getSalary() {
    return salary;
    }

    public void setSalary(String salary) {
    this.salary = salary;
    }
    }
  4. 编写Contoller 
    package com.scai.perfirmance.controller;


    import com.scai.perfirmance.request.UserRequest;
    import com.scai.perfirmance.response.UserRes;
    import com.scai.perfirmance.response.UserResponse;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.http.MediaType;
    import org.springframework.web.bind.annotation.*;

    import java.util.ArrayList;
    import java.util.List;

    @Api(description="xml接口测试")
    @RestController
    @RequestMapping("/xmlTest")

    public class UserXmlController {

    @ApiOperation(value = "xml接口测试",notes = "xml接口测试")
    @PostMapping(value = "/user",consumes = MediaType.APPLICATION_XML_VALUE,produces = MediaType.APPLICATION_XML_VALUE)

    public UserResponse testXml(@RequestBody UserRequest userRequest){

    UserResponse res =new UserResponse();
    List<UserRes> list = new ArrayList<UserRes>();

    UserRes userRes = new UserRes();
    userRes.setIdCard("11111111111111");
    userRes.setName("sky_fxh");
    // userRes.setAge(30);
    userRes.setSalary("5000");
    list.add(userRes);
    res.setUserResList(list);
    return res;
    }

    }
  5. 扩展说明

    @JacksonXmlElementWrapper:可用于指定List等集合类,外围标签名;
    @JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名;
    @JacksonXmlRootElement:指定生成xml根标签的名字;
    @JacksonXmlText:指定当前这个值,没有xml标签包裹。

    实体bean中也可以使用  @XmlRootElement 和@XmlElement这个标签,分别对应于@JacksonXmlRootElement 和@JacksonXmlProperty

  6. 测试结果 请求

    <?xml version="1.0" encoding="UTF-8"?>
    <message>
    <userlist>
    <user>
    <age>0</age>
    <idcard>111111111111111</idcard>
    <username>sky_fxh</username>
    <sex>man</sex>
    </user>
    </userlist>
    </message>

  7. 测试结果,返回

    <message>
    <userreslist>
    <userres>
    <idcard>11111111111111</idcard>
    <username>sky_fxh</username>
    <sex/>
    <age>0</age>
    <salary>5000</salary>
    </userres>
    </userreslist>
    </message>

 
 

 

转载于:https://www.cnblogs.com/scai-fxh/p/10598535.html

相关文章:

  • unity shader——BRDF分析
  • 基于Redis实现简单的分布式锁【理论】
  • 学习java编程艺术文章的储存与整理第一章
  • 关于BRDF的一些总结——转自其他博客
  • js map 、filter 、forEach 、every、some 的用法
  • 【视频版】PDF合并器破解视频教程
  • git 随笔(随时更新)
  • C# 使用Exchange WebService读取联系人
  • Crafting 手工 Physically Motivated Shading Models for Game Development
  • 001 Android TextUtils工具类的使用
  • windows下安装oracle11g测试是否成功与监听器问题和网页控制台登录
  • unity复制到剪切板
  • 软件开发的权限控制和权限验证
  • PBR论文链接
  • 词频统计
  • 2017-09-12 前端日报
  • create-react-app项目添加less配置
  • CSS居中完全指南——构建CSS居中决策树
  • extjs4学习之配置
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jQuery(一)
  • Material Design
  • React16时代,该用什么姿势写 React ?
  • tensorflow学习笔记3——MNIST应用篇
  • 大整数乘法-表格法
  • 力扣(LeetCode)22
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 你对linux中grep命令知道多少?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • $.ajax()方法详解
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二十四)Flask之flask-session组件
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (五)MySQL的备份及恢复
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *上位机的定义
  • .net Application的目录
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • []我的函数库
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [383] 赎金信 js
  • [C]编译和预处理详解
  • [IE技巧] IE 中打开Office文件的设置
  • [iHooya]2023年1月30日作业解析
  • [java]删除数组中的某一个元素
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别