• SpringBoot 接收xml数据


    1、搭建SpringBoot项目,使用Maven管理只需要添加如下依赖即可。

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.     <modelVersion>4.0.0modelVersion>
    5.     <parent>
    6.         <groupId>org.springframework.bootgroupId>
    7.         <artifactId>spring-boot-starter-parentartifactId>
    8.         <version>2.0.1.RELEASEversion>
    9.     parent>
    10.     <properties>
    11.         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    12.         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    13.     properties>
    14.     <dependencies>
    15.         <dependency>
    16.             <groupId>org.springframework.bootgroupId>
    17.             <artifactId>spring-boot-starter-webartifactId>
    18.         dependency>
    19.     dependencies>
    20.     <build>
    21.         <plugins>
    22.                 <plugin>
    23.                 <groupId>org.springframework.bootgroupId>
    24.                 <artifactId>spring-boot-maven-pluginartifactId>
    25.             plugin>
    26.         plugins>
    27.     build>
    28. project>

    2、添加启动类

    1. package com.mulhyac.lottery.ticket.boot;
    2. import com.mulhyac.lottery.ticket.boot.ticket.Ticket;
    3. import com.mulhyac.lottery.ticket.boot.ticket.TicketFactory;
    4. import org.springframework.boot.SpringApplication;
    5. import org.springframework.boot.autoconfigure.SpringBootApplication;
    6. @SpringBootApplication
    7. public class Application {
    8.     public static void main(String[] args) {
    9.         SpringApplication.run(Application.class,args);
    10.     }
    11. }

    这样boot项目就创建完毕了。

    3、添加xml依赖

    1. <dependency>
    2. <groupId>com.fasterxml.jackson.dataformatgroupId>
    3. <artifactId>jackson-dataformat-xmlartifactId>
    4. dependency>

    4、编写数据请求、响应类

    ⑴TicketRequest.java
    1. package com.mulhyac.lottery.ticket.boot.ticket.domain;
    2. import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
    3. import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    4. import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
    5. import javax.xml.bind.annotation.XmlElement;
    6. import javax.xml.bind.annotation.XmlRootElement;
    7. import java.util.List;
    8. @JacksonXmlRootElement(localName ="message")
    9. public class TicketRequest {
    10.     @JacksonXmlElementWrapper(localName ="orderlist")
    11.     @JacksonXmlProperty(localName ="order")
    12.     private List orderList;
    13.     public List getOrderList() {
    14.         return orderList;
    15.     }
    16.     public void setOrderList(List orderList) {
    17.         this.orderList = orderList;
    18.     }
    19. }

    ⑵OrderRequest.java

    1. package com.mulhyac.lottery.ticket.boot.ticket.domain;
    2. import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    3. import javax.xml.bind.annotation.XmlElement;
    4. public class OrderRequest {
    5.     public String lotteryType;
    6.     public String phase;
    7.     @JacksonXmlProperty(localName = "lotterytype")
    8.     public String getLotteryType() {
    9.         return lotteryType;
    10.     }
    11.     public void setLotteryType(String lotteryType) {
    12.         this.lotteryType = lotteryType;
    13.     }
    14.     @JacksonXmlProperty(localName = "phase")
    15.     public String getPhase() {
    16.         return phase;
    17.     }
    18.     public void setPhase(String phase) {
    19.         this.phase = phase;
    20.     }
    21. }

    ⑶TicketResponse.java

    1. package com.mulhyac.lottery.ticket.boot.ticket.domain;
    2. import java.util.List;
    3. import com.fasterxml.jackson.dataformat.xml.annotation.*;
    4. @JacksonXmlRootElement(localName ="message")
    5. public class TicketResponse {
    6.     private List orderList;
    7.     @JacksonXmlElementWrapper(localName ="orderlist")
    8.     @JacksonXmlProperty(localName ="order")
    9.     public List getOrderList() {
    10.         return orderList;
    11.     }
    12.     public void setOrderList(List orderList) {
    13.         this.orderList = orderList;
    14.     }
    15. }

    ⑷OrderResponse.java

    1. package com.mulhyac.lottery.ticket.boot.ticket.domain;
    2. import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    3. import javax.xml.bind.annotation.XmlElement;
    4. public class OrderResponse {
    5.     public String orderId;
    6.     public String sysId;
    7.     public String errorCode;
    8.     public String msg;
    9.     public OrderResponse() {
    10.     }
    11.     public OrderResponse(String orderId, String sysId, String errorCode, String msg) {
    12.         this.orderId = orderId;
    13.         this.sysId = sysId;
    14.         this.errorCode = errorCode;
    15.         this.msg = msg;
    16.     }
    17.     @JacksonXmlProperty(localName = "orderid")
    18.     public String getOrderId() {
    19.         return orderId;
    20.     }
    21.     public void setOrderId(String orderId) {
    22.         this.orderId = orderId;
    23.     }
    24.     @JacksonXmlProperty(localName = "sysid")
    25.     public String getSysId() {
    26.         return sysId;
    27.     }
    28.     public void setSysId(String sysId) {
    29.         this.sysId = sysId;
    30.     }
    31.     @JacksonXmlProperty(localName = "errorcode")
    32.     public String getErrorCode() {
    33.         return errorCode;
    34.     }
    35.     public void setErrorCode(String errorCode) {
    36.         this.errorCode = errorCode;
    37.     }
    38.     @JacksonXmlProperty(localName = "msg")
    39.     public String getMsg() {
    40.         return msg;
    41.     }
    42.     public void setMsg(String msg) {
    43.         this.msg = msg;
    44.     }
    45. }

    5、编写控制器

    1. package com.yilin.lottery.ticket.boot.ticket.controller;
    2. import com.mulhyac.lottery.ticket.boot.ticket.domain.OrderRequest;
    3. import com.mulhyac.lottery.ticket.boot.ticket.domain.OrderResponse;
    4. import com.mulhyac.lottery.ticket.boot.ticket.domain.TicketRequest;
    5. import com.mulhyac.lottery.ticket.boot.ticket.domain.TicketResponse;
    6. import org.springframework.http.MediaType;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.web.bind.annotation.PostMapping;
    9. import org.springframework.web.bind.annotation.RequestBody;
    10. import org.springframework.web.bind.annotation.ResponseBody;
    11. import java.util.ArrayList;
    12. import java.util.List;
    13. @Controller
    14. public class SscController {
    15.     @PostMapping(value = "/test", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = MediaType.APPLICATION_XML_VALUE)
    16.     @ResponseBody
    17.     public TicketResponse test(@RequestBody TicketRequest ticketRequest){
    18.         TicketResponse ticketResponse=new TicketResponse();
    19.         List orders=new ArrayList();
    20.         OrderResponse o=new OrderResponse();
    21.         o.setMsg("投注成功");
    22.         orders.add(o);
    23.         ticketResponse.setOrderList(orders);
    24.         return ticketResponse;
    25.     }
    26. }

    6、使用postman进行测试,选择Body->raw->XML,请求参数如下:

    1. <message> 
    2.   <orderlist> 
    3.     <order> 
    4.       <lotterytype>2004lotterytype>  
    5.       <phase>201409209phase>  
    6.       <orderid>zy2014090234322orderid>  
    7.       <playtype>200401playtype>  
    8.       <betcode>00,02,03,04,05,06,07^betcode>  
    9.       <multiple>1multiple>  
    10.       <amount>2amount>  
    11.       <add>0add>  
    12.       <endtime>结束时间endtime
    13.     order
    14.   orderlist
    15. message>

    响应结果如下:

    1. <message>
    2.     <orderlist>
    3.         <order>
    4.             <orderid/>
    5.             <sysid/>
    6.             <errorcode/>
    7.             <msg>投注成功msg>
    8.         order>
    9.     orderlist>
    10. message>

    这样也就完成了xml的数据请求与响应。

    熟练的同学. 也可使用Lombok等优化一下对象!

  • 相关阅读:
    数据治理:如何利用元数据管理数据资产
    LoadBalancer
    计算机毕业设计php+vue基于微信小程序的员工宿舍报修系统
    如何编写一个Perl爬虫程序
    建陶行业标杆『诺贝尔瓷砖』&企企通供应链协同系统一期项目上线,数字采购领航企业高质量发展
    工作手机定制服务
    【字符串】KMP算法
    node-sass报错,node16运行node14的项目
    vue实现blob文档流下载文件
    【AI编译器】triton学习:矩阵乘优化
  • 原文地址:https://blog.csdn.net/qq_39706515/article/details/126297127