【SpringBoot 后台接收XML类型参数和返回XML类型参数】

这篇具有很好参考价值的文章主要介绍了【SpringBoot 后台接收XML类型参数和返回XML类型参数】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


记录一下接收xml参数的坑
简单类型xml

1.使用@XmlRootElement注解指定根元素名称,不指定默认使用类名和属性名(小写),可以使用name属性指定 根元素和子元素的标签名

@Data
@XmlRootElement
public class UserXml {
    private String name;
    private String age;
    private String address;
}

2.在controller 使用@RequestBody 接收请求参数

@GetMapping(value = "/userxml",produces = MediaType.APPLICATION_XML_VALUE)
    public UserXml userXml(@RequestBody UserXml userXml){
        return userXml;
    }

3.返回xml报文

在@xxxMapping中添加属性produces = MediaType.APPLICATION_XML_VALUE,即可返回xml形式的报文

@GetMapping(value = "/userxml",produces = MediaType.APPLICATION_XML_VALUE)
    public UserXml userXml(){
        UserXml userXml=new UserXml();
        userXml.setName("张三");
        userXml.setAge("18");
        userXml.setAddress("北京");
        return userXml;
    }

特别注意

测试发现,当使用 例如@XmlRootElement(name=“Root”) 时,如果name=“Root” 是大写的情况下,会无法映射到实体类,也无法返回xml报文,属性值都是null,目前原因不名

如果必须使用大写形式,

解决办法,改为使用@JacksonXmlRootElement和@JacksonXmlProperty 来映射xml参数,使用localName = “Root” 指定标签名,需要特别注意,使用这种方式时,属性名应该遵循驼峰命名,即首字母小写,如果大写,在返回xml报文时会造成标签重复的问题

@Data
@JacksonXmlRootElement
public class UserXml {
    @JacksonXmlProperty(localName = "Name")
    private String name;
    @JacksonXmlProperty(localName = "Age")
    private String age;
    @JacksonXmlProperty(localName = "Address")
    private String address;
}

复杂类型xml

例如:

实体类嵌套元素,Root根元素下有RequestHead和RequestBody元素,而这两个元素下各自包含了自己的子元素文章来源地址https://www.toymoban.com/news/detail-594902.html

@JacksonXmlRootElement(localName = "Root")
@Data
public class CABXXmlInfoResult implements Serializable {

    @JacksonXmlProperty(localName = "RequestHead")
    private RequestHead requestHead;

    @JacksonXmlProperty(localName = "RequestBody")
    private RequestBody requestBody;
    @Data
    public static class RequestHead {
        @JacksonXmlProperty(localName = "Sign")
        private String sign;
    }
    @Data
    public static class RequestBody {

        /**
         * 保险公司编码 CABX
         */
        @JacksonXmlProperty(localName = "InsuranceCode")
        private String insuranceCode;
        /**
         * 投保单号
         */
        @JacksonXmlProperty(localName = "ProposalNo")
        private String proposalNo;
        /**
         * 支付状态 true:成功
         * false:失败
         */
        @JacksonXmlProperty(localName = "PayState")
        private String payState;
        /**
         * 承保结果 成功/失败原因
         */
        @JacksonXmlProperty(localName = "Message")
        private String message;
        /**
         * 保单号
         */
        @JacksonXmlProperty(localName = "PolicyNo")
        private String policyNo;
        /**
         * 电子保单下载地址
         */
        @JacksonXmlProperty(localName = "Epolicy")
        private String epolicy;

        /**
         * 电子保函下载地址
         */
        @JacksonXmlProperty(localName = "Gpolicy")
        private String gpolicy;
        /**
         * 银行支付流水号 成功且基本户返回
         */
        @JacksonXmlProperty(localName = "PaySerialNumber")
        private String paySerialNumber;

        /**
         * 银行名称
         */
        @JacksonXmlProperty(localName = "PayBankacclocalName")
        private String payBankacclocalName;

        /**
         * 银行账号
         */
        @JacksonXmlProperty(localName = "PayBankaccNo")
        private String payBankaccNo;

        /**
         * 支付时间 yyyy-MM-dd HH:mm:ss
         */
        @JacksonXmlProperty(localName = "PayTime")
        private String payTime;

        /**
         * 支付方式 1:易宝对公支付
         * 2:支票支付
         */
        @JacksonXmlProperty(localName = "PayType")
        private String payType;
    }


}

到了这里,关于【SpringBoot 后台接收XML类型参数和返回XML类型参数】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot文件上传同时,接收复杂参数

    目录 环境信息 问题描述 错误分析 解决方法 简单参数 总结         Spring Boot:2.0.8.RELEASE         Spring Boot内置的tomcat:tomcat-embed-core 8.5.37         收到文件上传的开发工作,要求能适配各种场景,并且各场景的请求参数不一样,因此接收的参数不能是固定的几个字段

    2024年02月09日
    浏览(46)
  • SpringBoot如何优雅接收前端请求参数

    @RequestParm 我们可以通过 @RequestParm 注解去绑定请求中的参数,将(查询参数或者form表单数据)绑定到controller的方法参数中,通俗点说就是,我们可以在get请求和post请求中使用改注解,get请求中会从查询参数中获取参数,post请求会从form表单或者查询参数中获取参数 默认情况

    2024年02月11日
    浏览(35)
  • springboot接收参数的几种方式

    传参格式:?号传参,在地址栏上加参数 传参格式:请求体传参 form-data的请求是在body中,为key=value格式,同时可以传文件,Content-Type为multipart/form-data,后端可以用@RequestParam接收。 json传参也是在body当中,只不过json是一种数据格式,后端可以用@RequestBody接收。 地址栏传参,

    2024年02月10日
    浏览(60)
  • SpringBoot接口如何正确地接收时间参数

    唠嗑部分 在做Java开发时,肯定会碰到传递时间参数的情况吧,比如用户的出生日期、活动的开始,结束日期等等,这些参数往往是由前端传递过来的,那么在SpringBoot项目中,该如何正确的接收日期参数呢,这便是我们今日所说的内容 首先我们来回顾一下常用的几种传参方式

    2024年02月15日
    浏览(47)
  • springboot接收前端参数的几种方式

    目录 第一种:直接在方法中指定参数 第二种:使用@requesrParam注解 第三种方法:基于@pathVariable  第四种方法:基于@ResquestBody 在开始之前,我们需要一下准备工作,创建数据库,springboot工程,添加依赖,配置文件,使用的技术有mybatisplus,springboot,maven,mysql。 首先,数据库

    2024年02月07日
    浏览(47)
  • springboot后端接收前端传数组参数方法

    与@RequestBody不同,@RequestParam传递的数组中有多少个值,便排排下来写便是 (注意微操,参数名需为key的名称为@RequestParam括号里的名称,而不是定义的数组名)

    2024年02月16日
    浏览(43)
  • 【SpringBoot系列】接收前端参数的几种方式

    前言 在现代Web开发中,前后端分离的架构已经成为主流。前端负责展示页面和用户交互,而后端则负责处理业务逻辑和数据存储。在这种架构下,前端需要将用户输入的数据发送给后端进行处理。而Spring Boot作为一种快速开发框架,提供了多种方式来接收前端数据。 本文将介

    2024年02月05日
    浏览(47)
  • SpringBoot中接收POST参数的几种方式

    今天在做一个vue前后端分离项目的过程中,踩了一个坑,记录一下 前端如下: 用户名字段: username 密码字段: password 提交后,发现后端怎么也收不到参数,总结如下: 常见的接收post参数,有三种 额外参数: 使用 required = false 标注参数是非必须的。 使用 defaultValue 给参数

    2024年02月15日
    浏览(60)
  • SpringBoot——请求-Postman工具-6种常见请求参数接收

    前后端分离开发的情况下每开发一个功能都要对接口进行测试,通常都会去浏览器访问测试,但是这样子都是get请求,测试不了post请求。 postman可以模拟浏览器发起任何形式的http请求 ,下载完postman后登陆进去 创建一个workspace   这部分在Javaweb——Request通用方式获取请求参数

    2024年02月02日
    浏览(42)
  • Java实现接收xml格式数据并解析,返回xml格式数据

    需求描述:后端接受xml格式数据,解析出相应数据,并返回xml格式数据。

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包