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字符串);
}
}