Spring Boot 返回 XML 數據,一分鍾搞定!


Spring Boot 返回 XML 數據,前提必須已經搭建了 Spring Boot 項目,所以這一塊代碼就不貼了,可以點擊查看之前分享的 Spring Boot 返回 JSON 數據,一分鍾搞定!

你所需具備的基礎

更多請在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" 可獲取更多,轉載請原樣保留本信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM