Spring Boot 返回 XML 數據,一分鐘搞定!
Spring Boot 返回 XML 數據,前提必須已經搭建了 Spring Boot 項目,所以這一塊代碼就不貼了,可以點擊查看之前分享的 Spring Boot 返回 JSON 數據,一分鐘搞定!。
你所需具備的基礎
- 什麽是 Spring Boot?
- Spring Boot 核心配置文件詳解
- Spring Boot 開啟的 2 種方式
- Spring Boot 自動配置原理、實戰
- Spring Boot 2.x 啟動全過程源碼分析
更多請在Java技術棧微信公眾號後臺回復關鍵字:boot。
如何返回 XML 數據?
那麽如何返回 XML 格式數據呢?其實很簡單!
加入 XML 工具依賴
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>
不用帶版本號,因為在 spring-webmvc
包中已經定義好了,只是沒有把依賴傳遞過來而已,如下面源碼所示。
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.5</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>jcl-over-slf4j</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> <optional>true</optional> </dependency>
可以看到 <optional>true</optional>
,所以,只要手動顯示加下這個依賴就行了,關於這個標簽可以點擊這裏查看這篇文章。
返回 XML 數據格式定義
1)定義返回方式
在 Controller 類上面用 @RestController
定義或者在方法上面用 @ResponseBody
定義,表明是在 Body 區域輸出數據。
2)定義返回類型
此時 Content-Type
默認為 application/xhtml+xml;charset=UTF-8
格式,可以手動改變下類型:application/xml;charset=UTF-8
。
@RequestMapping(value = "/test" produces = MediaType.APPLICATION_XML_VALUE)
表明是用 application/xml
格式輸出數據。
3)定義輸出格式
控制層方法直接返回對象,對象會自動轉換為 XML 格式,不過是默認的標簽,可以通過以下標簽進行自定義 XML 格式。
@JacksonXmlRootElement(localName = "response")
public class UserXmlVO {
@JacksonXmlProperty(localName = "user_name")
private String name;
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "order_info")
private List<OrderInfoVO> orderList;
// get set 略
}
上面演示了幾個常用的註解。
@JacksonXmlRootElement: 用在類上,用來自定義根節點名稱;
@JacksonXmlProperty: 用在屬性上,用來自定義子節點名稱;
@JacksonXmlElementWrapper: 用在屬性上,可以用來嵌套包裝一層父節點,或者禁用此屬性參與 XML 轉換。
更多註解可以查看這個包:
如何手動完成對象XML 的互轉?
jackson-dataformat-xml
這個包裏面有一個 com.fasterxml.jackson.dataformat.xml.XmlMapper
類,該類繼承父類 com.fasterxml.jackson.databind.ObjectMapper
,可以利用它來完成互轉操作。
下面是幾個參考方法:
com.fasterxml.jackson.dataformat.xml.XmlMapper#readValue
com.fasterxml.jackson.dataformat.xml.XmlMapper#writeValue
com.fasterxml.jackson.databind.ObjectMapper#writeValueAsString
更多相關的使用及原理可以查看這個包。
好了,Spring Boot 返回 XML 格式數據就是這麽簡單,有什麽不懂的可以關註下面的Java技術棧微信公眾號和大家一起學習討論。
本文原創首發於微信公眾號:Java技術棧(id:javastack),關註公眾號在後臺回復 "boot" 可獲取更多,轉載請原樣保留本信息。
Spring Boot 返回 XML 數據,一分鐘搞定!