1. 程式人生 > >Spring Boot 返回 XML 數據,一分鐘搞定!

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

傳遞 med web tid cati write tac java技術 工具

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 數據,一分鐘搞定!