XStream是一個開源項(xiàng)目,利用它可以方便的進(jìn)行java對象和xml之間進(jìn)行轉(zhuǎn)換,從而在測試,服務(wù)器設(shè)置等方面有很好的應(yīng)用。
先建兩個java對象
1.Adress類
?2.Person類
3.生成一個Person對象,并將其轉(zhuǎn)化為xml
//生成一個java對象
??Person person=new Person();
??person.setName("chb");
??person.setAge(22);
??person.setSex("boy");
??
??//生成一個Adress對象
??Adress adr=new Adress();
??adr.setProvice("Beijing");
??adr.setCity("Beijing");
??person.setAdress(adr);
??
??//將java對象轉(zhuǎn)化為xml
??XStream xstream=new XStream(new DomDriver());
??String strxml=xstream.toXML(person);
??System.out.println(strxml);
輸出:
我們可以看到,xml根結(jié)點(diǎn)是<xml_chb.Person>是類的全名,這樣看起來很繁瑣,我們可以使用別名來改進(jìn)這一現(xiàn)象:
? xstream.alias("person",Person.class);
??strxml=xstream.toXML(person);
??System.out.println(strxml);
輸出結(jié)果為:
4.從xml轉(zhuǎn)化為POJO
String str="<person><name>emily</name><sex>girl</sex><age>22</age><adress><provice>Beijing</provice><city>Beijing</city></adress></person>";
??Person person1=(Person)xstream.fromXML(str);
??System.out.println("姓名:"+person1.getName());
??System.out.println("性別:"+person1.getSex());
輸出結(jié)果為:
姓名:emily
性別:girl
5.修改元素值
Adress adr1=new Adress();
??adr1.setProvice("Shanghai");
??adr1.setCity("Shanghai");
??person.setAdress(adr1);
??strxml=xstream.toXML(person);
??System.out.println(strxml);
輸出結(jié)果:
XStream的jar包可以直接到http://xstream.codehaus.org/下載,那里有一些簡單例子
XStream是個很小的開源項(xiàng)目,所以它能實(shí)現(xiàn)的功能也就很有限,它只能包裝簡單類型的元素進(jìn)行轉(zhuǎn)換,復(fù)雜類型的,比如Calendar,Date等類型則需要用戶自己實(shí)現(xiàn)Converter。
還有,XStream對xml的操作并不好,比如想把一個子節(jié)點(diǎn)變成屬性就是一個很復(fù)雜的工作,但是大家平時用于測試的話,看看對象中到底存著什么數(shù)據(jù),還是必要的。