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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
                <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2、添加启动类

package com.mulhyac.lottery.ticket.boot;

import com.mulhyac.lottery.ticket.boot.ticket.Ticket;
import com.mulhyac.lottery.ticket.boot.ticket.TicketFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

}

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

3、添加xml依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

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

⑴TicketRequest.java
package com.mulhyac.lottery.ticket.boot.ticket.domain;

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 javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

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

    @JacksonXmlElementWrapper(localName ="orderlist")
    @JacksonXmlProperty(localName ="order")
    private List<OrderRequest> orderList;

    public List<OrderRequest> getOrderList() {
        return orderList;
    }

    public void setOrderList(List<OrderRequest> orderList) {
        this.orderList = orderList;
    }

}

⑵OrderRequest.java

package com.mulhyac.lottery.ticket.boot.ticket.domain;

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

import javax.xml.bind.annotation.XmlElement;

public class OrderRequest {

    public String lotteryType;

    public String phase;

    @JacksonXmlProperty(localName = "lotterytype")
    public String getLotteryType() {
        return lotteryType;
    }

    public void setLotteryType(String lotteryType) {
        this.lotteryType = lotteryType;
    }

    @JacksonXmlProperty(localName = "phase")
    public String getPhase() {
        return phase;
    }

    public void setPhase(String phase) {
        this.phase = phase;
    }
}

⑶TicketResponse.java

package com.mulhyac.lottery.ticket.boot.ticket.domain;


import java.util.List;
import com.fasterxml.jackson.dataformat.xml.annotation.*;

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

    private List<OrderResponse> orderList;

    @JacksonXmlElementWrapper(localName ="orderlist")
    @JacksonXmlProperty(localName ="order")
    public List<OrderResponse> getOrderList() {
        return orderList;
    }

    public void setOrderList(List<OrderResponse> orderList) {
        this.orderList = orderList;
    }
}

⑷OrderResponse.java

package com.mulhyac.lottery.ticket.boot.ticket.domain;

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

import javax.xml.bind.annotation.XmlElement;

public class OrderResponse {

    public String orderId;

    public String sysId;

    public String errorCode;

    public String msg;

    public OrderResponse() {
    }

    public OrderResponse(String orderId, String sysId, String errorCode, String msg) {
        this.orderId = orderId;
        this.sysId = sysId;
        this.errorCode = errorCode;
        this.msg = msg;
    }

    @JacksonXmlProperty(localName = "orderid")
    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    @JacksonXmlProperty(localName = "sysid")
    public String getSysId() {
        return sysId;
    }

    public void setSysId(String sysId) {
        this.sysId = sysId;
    }

    @JacksonXmlProperty(localName = "errorcode")
    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    @JacksonXmlProperty(localName = "msg")
    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

5、编写控制器

package com.yilin.lottery.ticket.boot.ticket.controller;

import com.mulhyac.lottery.ticket.boot.ticket.domain.OrderRequest;
import com.mulhyac.lottery.ticket.boot.ticket.domain.OrderResponse;
import com.mulhyac.lottery.ticket.boot.ticket.domain.TicketRequest;
import com.mulhyac.lottery.ticket.boot.ticket.domain.TicketResponse;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

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

@Controller
public class SscController {

    @PostMapping(value = "/test", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = MediaType.APPLICATION_XML_VALUE)
    @ResponseBody
    public TicketResponse test(@RequestBody TicketRequest ticketRequest){
        TicketResponse ticketResponse=new TicketResponse();
        List<OrderResponse> orders=new ArrayList<OrderResponse>();
        OrderResponse o=new OrderResponse();
        o.setMsg("投注成功");
        orders.add(o);
        ticketResponse.setOrderList(orders);
        return ticketResponse;
    }

}

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

<?xml version="1.0" encoding="utf-8"?>

<message> 
  <orderlist> 
    <order> 
      <lotterytype>2004</lotterytype>  
      <phase>201409209</phase>  
      <orderid>zy2014090234322</orderid>  
      <playtype>200401</playtype>  
      <betcode>00,02,03,04,05,06,07^</betcode>  
      <multiple>1</multiple>  
      <amount>2</amount>  
      <add>0</add>  
      <endtime>结束时间</endtime> 
    </order> 
  </orderlist> 
</message>

响应结果如下:

<message>
    <orderlist>
        <order>
            <orderid/>
            <sysid/>
            <errorcode/>
            <msg>投注成功</msg>
        </order>
    </orderlist>
</message>

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐