XStream是一個(gè)開源項(xiàng)目,利用它可以方便的進(jìn)行java對(duì)象和xml之間進(jìn)行轉(zhuǎn)換,從而在測(cè)試,服務(wù)器設(shè)置等方面有很好的應(yīng)用。
先建兩個(gè)java對(duì)象
1.Adress類
?2.Person類
3.生成一個(gè)Person對(duì)象,并將其轉(zhuǎn)化為xml
//生成一個(gè)java對(duì)象??Person person=new Person();??person.setName("chb");??person.setAge(22);??person.setSex("boy");????//生成一個(gè)Adress對(duì)象??Adress adr=new Adress();??adr.setProvice("Beijing");??adr.setCity("Beijing");??person.setAdress(adr);????//將java對(duì)象轉(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());
姓名: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/下載,那里有一些簡(jiǎn)單例子
XStream是個(gè)很小的開源項(xiàng)目,所以它能實(shí)現(xiàn)的功能也就很有限,它只能包裝簡(jiǎn)單類型的元素進(jìn)行轉(zhuǎn)換,復(fù)雜類型的,比如Calendar,Date等類型則需要用戶自己實(shí)現(xiàn)Converter。
還有,XStream對(duì)xml的操作并不好,比如想把一個(gè)子節(jié)點(diǎn)變成屬性就是一個(gè)很復(fù)雜的工作,但是大家平時(shí)用于測(cè)試的話,看看對(duì)象中到底存著什么數(shù)據(jù),還是必要的。