XStream是一個Java對象和XML相互轉換的工具。提供了所有的基礎類型、數組、集合等類型直接轉換的支持。因此XML常用於數據交換、對象序列化(這種序列化和Java對象的序列化技術有着本質的區別)。
特點
-
使用方便 - XStream的API提供了一個高層次外觀,以簡化常用的用例。
-
無需創建映射 - XStream的API提供了默認的映射大部分對象序列化。
-
性能 - XStream快速和低內存佔用,適合於大對象圖或系統。
-
乾淨的XML - XStream創建一個乾淨和緊湊XML結果,這很容易閱讀。
-
不需要修改對象 - XStream可序列化的內部字段,如私有和最終字段,支持非公有制和內部類。默認構造函數不是強制性的要求。
-
完整對象圖支持 - XStream允許保持在對象模型中遇到的重複引用,並支持循環引用。
-
可自定義的轉換策略 - 定製策略可以允許特定類型的定製被表示爲XML的註冊。
-
安全框架 - XStream提供了一個公平控制有關解組的類型,以防止操縱輸入安全問題。
-
錯誤消息 - 出現異常是由於格式不正確的XML時,XStream拋出一個統一的例外,提供了詳細的診斷,以解決這個問題。
-
另一種輸出格式 - XStream支持其它的輸出格式,如JSON。
XStream對象相當Java對象和XML之間的轉換器,轉換過程是雙向的。創建XSteam對象的方式很簡單,只需要new XStream()即可。
Java到xml,用toXML()方法。
Xml到Java,用fromXML()方法。
2.操作
(1)導入所需要的依賴
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
(2)使用註解的方式,需要在實體類上和屬性上添加註解@XStreamAlias(),使轉換的XML屬性與實體類的屬性相對應,使之轉換
@Entity
@Table(name = "oa_document")
@XStreamAlias("META_DATA")
public class OADocument {
//印章id
@XStreamAlias("SEAL_ID")
@JsonProperty("sealId")
@Column(length = 22, nullable = false)
private String sealId;
//用印描述
@XStreamAlias("SEAL_DESC")
@Column(name = "seal_desc", length = 256)
private String sealDesc;
//文檔編號
@XStreamAlias("FILE_NO")
@Column(name = "file_no", length = 64)
private String fileNo;
........
操作
OADocument oaDocument= XStreamUtil.getXmlToEntity(xml,oaDocument,classes);
類:XStreamUtil
public static <T> T getXmlToEntity(String xmlStr, T targetObj, Class<?>[] classes)throws Exception{
XStream xstream = new XStream();
//xstream安全設置
XStream.setupDefaultSecurity(xstream);
//應用OADocument類的註解
xstream.processAnnotations(OADocument.class);
xstream.allowTypes(classes);
//自動檢測註解
xstream.autodetectAnnotations(true);
targetObj=(T)xstream.fromXML(xmlStr);
return targetObj;
}
結果:
參考:
XStream有很強大的功能,可以參考:
https://blog.csdn.net/qq_35464899/article/details/85047107
https://blog.csdn.net/xiaokui_wingfly/article/details/46470145