XStream使用(XML轉JAVA)

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章