Xstream
需要的jar包
xpp3_min-1.1.4c.jar
xstream-1.3.1.jar
作用:
將xml字符串轉(zhuǎn)換為java對象,或者將java對象轉(zhuǎn)換為xml字符串
核心類:XStream xs = new XStream();
準(zhǔn)備工作,先創(chuàng)建兩個(gè)java類:City和Province
@XStreamAlias("city")
public class City {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@XStreamAlias("province")
public class Province {
@XStreamAsAttribute()
private String name;
@XStreamImplicit(itemFieldName = "city")
private List citys;
public List getCitys() {
return citys;
}
public void setCitys(List citys) {
this.citys = citys;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
第一:將java類轉(zhuǎn)換為xml字符串
XStream xs = new XStream();
String xml = xs.toXML(JavaBean);
打印的字符串會將類的包名作為xml的標(biāo)簽,以及里面的字段都會變成標(biāo)簽。
例如將City類變?yōu)閤ml字符串:
武漢
將Province變成xml字符串
湖北
武漢
所以為了能將打印的字符串變?yōu)槲覀兯胍母袷?,可以使用Xstream提供的注解進(jìn)行格式化輸出
提供便捷注解
@XStreamAlias(別名) 對類和變量設(shè)置別名
@XStreamAsAttribute ?設(shè)置變量生成屬性
@XStreamOmitField ?設(shè)置變量 不生成到XML
@XStreamImplicit(itemFieldName = “hobbies”) 設(shè)置集合類型變量 別名
使注解生效
xStream.autodetectAnnotations(true);
第二:將xml字符串變?yōu)閖ava對象
Object xs.fromXML(InputStream input); ?//將一個(gè)下買了指定的流變?yōu)閖ava對象
Object xs.fromXML(String xml) ?//將xml字符串變?yōu)閖ava對象
Object xs.fromXML(InputStream input,Object root) ??
Object xs.fromXML(String xml,Object root) ??
注意:轉(zhuǎn)換的xml文檔必須與Java對象 ?的格式對應(yīng)
例如:將下面xml字符串轉(zhuǎn)換為Java對象
武漢
則進(jìn)行轉(zhuǎn)換時(shí)候:
XStream xs = new XStream();
Object o = xs.fromXML(in);
若對應(yīng)的java格式一定是:
包名為:com.domain
類名為:City
里面有一個(gè)成員屬性:name ?提供setter/getter方法
若不是則可以使用別名:
a.為類設(shè)置別名
xs.alias("city", City.class);
b.為屬性添加別名
xstream.useAttributeFor(Blog.class,"author");
能不能通過注解將 xml轉(zhuǎn)換為制定的java對象 ??
能,手動(dòng)用方法添加別名
? ?