spring boot中使用xml請求

spring boot 中使用xml請求java

  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 和@JacksonXmlPropertyweb

  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>spring

  7. 測試結果,返回

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

相關文章
相關標籤/搜索