XStream

  thought works提供的開源jar庫,用於完成bean對象與xml文檔之間的相互轉換,也可完成bean與json的轉換,bean無需提供get/set與默認無參構造器。

// 類名作爲xml文檔的根節點
// @XStreamAlias用於指定根節點的別名,默認類全名
@XStreamAlias("xx")
public class Xx {
    // 類屬性默認作爲根節點的子節點
    // @XStreamAlias用於指定子節點的別名,默認屬性名
    @XStreamAlias("name")
    private String name;

    // @XStreamAsAttribute將屬性作爲根節點或上級節點的一個屬性,而不再是子節點
    @XStreamAsAttribute
    @XStreamAlias("id")
    private Integer id;

    // map內的每個鍵值對,對應子節點yy內的一個entry子節點,key和value分別對應entry內的兩個子節點
    // <yy><entry><string>..</string><object>..</object></entry></yy>
    @XStreamAlias("yy")
    private Map<String, Object> yy;

    // @XStreamImplicit可去掉外層的list節點,只列舉List的元素,元素的名字可由itemFieldName指定
    @XStreamImplicit(itemFieldName="str")
    private List<String> Zz;

    // @XStreamOmitField用於忽略age,阻止其序列化
    @XStreamOmitField
    private Integer age;

    //get/set
    ...

    public static void main(String[] args) {
        XStream xStream = new XStream();

        // 將對象序列化爲xml串
        // 創建一個bean,bean的屬性必須初始化,否則不能序列化
        xStream.autodetectAnnotations(true);
        Xx xx = new Xx();
        xx.setKey("aa");
        xx.setValue("bb");
        String xmlStr = xStream.toXML(cd);

        // 將xml串反序列化爲對象
        // 創建一個bean,由xml來初始化
        xstream.alias("xx", ....Xx.class);
        xstream.alias("name", ....String.class);
        xstream.alias("id", ....Integer.class);
        Xx xx= new Xx();
        xx = (Xx) xstream.fromXML(xml字符串);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章