您的位置: 旅游网 > 明星

使用XStream进行POJO和xml之间的转换

发布时间:2019-10-17 03:09:33

XStream是一个开源项目,利用它可以方便的进行java对象和xml之间进行转换,从而在测试,服务器设置等方面有很好的应用。

先建两个java对象

1.Adress类

packagexml_chb;

publicclassAdress...{

privateStringprovice;

privateStringcity;

publicStringgetCity()...{

returncity;

}

publicvoidsetCity(Stringcity)...{

this.city=city;

}

publicStringgetProvice()...{

returnprovice;

}

publicvoidsetProvice(Stringprovice)...{

this.provice=provice;

}

}

2.Person类

packagexml_chb;

publicclassPerson...{

privateStringname="";

privateStringsex="";

privateintage;

privateStringmobile;

privateAdressadress;

publicintgetAge()...{

returnage;

}

publicvoidsetAge(intage)...{

this.age=age;

}

publicStringgetMobile()...{

returnmobile;

}

publicvoidsetMobile(Stringmobile)...{

this.mobile=mobile;

}

publicStringgetName()...{

returnname;

}

publicvoidsetName(Stringname)...{

this.name=name;

}

publicStringgetSex()...{

returnsex;

}

publicvoidsetSex(Stringsex)...{

this.sex=sex;

}

publicAdressgetAdress()...{

returnadress;

}

publicvoidsetAdress(Adressadress)...{

this.adress=adress;

}

}

3.生成一个Person对象,并将其转化为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对象转化为xml

XStream xstream=new XStream(new DomDriver());

String strxml=xstream.toXML(person);

System.out.println(strxml);

输出:

<xml__chb.Person>

<name>chb</name>

<sex>boy</sex>

<age>22</age>

<adress>

<provice>Beijing</provice>

<city>Beijing</city>

</adress>

</xml__chb.Person>

我们可以看到,xml根结点是<xml_chb.Person>是类的全名,这样看起来很繁琐,我们可以使用别名来改进这一现象:

xstream.alias("person",Person.class);

strxml=xstream.toXML(person);

System.out.println(strxml);

输出结果为:

<person>

<name>chb</name>

<sex>boy</sex>

<age>22</age>

<adress>

<provice>Beijing</provice>

<city>Beijing</city>

</adress>

</person>

4.从xml转化为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);

输出结果:

<person>

<name>chb</name>

<sex>boy</sex>

<age>22</age>

<adress>

<provice>Shanghai</provice>

<city>Shanghai</city>

</adress>

</person>

XStream的jar包可以直接到http://xstream.codehaus.org/下载,那里有一些简单例子

XStream是个很小的开源项目,所以它能实现的功能也就很有限,它只能包装简单类型的元素进行转换,复杂类型的,比如Calendar,Date等类型则需要用户自己实现Converter。

还有,XStream对xml的操作并不好,比如想把一个子节点变成属性就是一个很复杂的工作,但是大家平时用于测试的话,看看对象中到底存着什么数据,还是必要的。

陕西治疗不孕不育方法
攀枝花治疗阳痿医院
北海治疗包皮包茎方法
大庆治疗癫痫病医院哪家好
玉溪治疗盆腔炎方法
猜你会喜欢的
猜你会喜欢的