spring boot 中使用xml請求java
- 先在pom文件中引入依賴包
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.0</version>
</dependency> - 編寫請求實體
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;
}
} - 返回實體
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;
}
} - 編寫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;
}
} - 擴展說明
@JacksonXmlElementWrapper:可用於指定List等集合類,外圍標籤名;
@JacksonXmlProperty:指定包裝標籤名,或者指定標籤內部屬性名;
@JacksonXmlRootElement:指定生成xml根標籤的名字;
@JacksonXmlText:指定當前這個值,沒有xml標籤包裹。
實體bean中也能夠使用 @XmlRootElement 和@XmlElement這個標籤,分別對應於@JacksonXmlRootElement 和@JacksonXmlPropertyweb - 測試結果 請求
<?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 - 測試結果,返回
<message>
<userreslist>
<userres>
<idcard>11111111111111</idcard>
<username>sky_fxh</username>
<sex/>
<age>0</age>
<salary>5000</salary>
</userres>
</userreslist>
</message>app