XStream使用文档XStream使用文档作者:胡少锋Email:hsf@21cn.com2011年11月第1页共34页XStream使用文档1基本介绍1.1前言XStream是一个轻量级的、简单易用的开放源代码Java库,用于将Java对象序列化为XML或者再转换回来。而且XStream还能将java对象转成其它格式,比如JSon。官方上的XStream特点:使用简单不需要配置映射速度快,占用内存小生成的XML文件简洁不需要修改序列化对象的类型支持类嵌套详细的错误日志可转成其它格式XStream相比其它框架有如下的优点:XStream不关心序列化/逆序列化的类的字段的可见性。序列化/逆序列化类的字段不需要getter和setter方法。序列化/逆序列化的类不需要有默认构造函数。2安装和使用2.1下载XStream的网站http://xstream.codehaus.org/download.html上面可以下载到各种版本。目前用最新版本是1.4.1,下载这个版本即可。第2页共34页XStream使用文档2.2安装XStream的安装方法比较简单,将xstream-1.4.1.jar以及kxml2-2.3.0.jar放置到类路径下面即可使用。如下图所示:3开始一个例子3.1新建一个空的javaproject工程通过eclipse向导新建一个JavaProject工程,并将上面提的两个类添加到类路径下。工程如下:3.2编写Java后台类,代码如下新建一个cn的package,然后在cn下面新建两个Java类,Person和PhoneNumber,代码分别如下:Person.javapackagecn;第3页共34页XStream使用文档publicclassPerson{privateStringfirstname;privateStringlastname;privatePhoneNumberphone;privatePhoneNumberfax;publicPerson(StringfirstName,StringlastName){this.firstname=firstName;this.lastname=lastName;}publicStringgetFirstname(){returnfirstname;}publicvoidsetFirstname(Stringfirstname){this.firstname=firstname;}publicStringgetLastname(){returnlastname;}publicvoidsetLastname(Stringlastname){this.lastname=lastname;}publicPhoneNumbergetPhone(){returnphone;}publicvoidsetPhone(PhoneNumberphone){第4页共34页XStream使用文档this.phone=phone;}publicPhoneNumbergetFax(){returnfax;}publicvoidsetFax(PhoneNumberfax){this.fax=fax;}}PhoneNumber.javapackagecn;publicclassPhoneNumber{privateintcode;privateStringnumber;publicPhoneNumber(intcode,Stringnumber){this.code=code;this.number=number;}publicintgetCode(){returncode;}publicvoidsetCode(intcode){this.code=code;}publicStringgetNumber(){第5页共34页XStream使用文档returnnumber;}publicvoidsetNumber(Stringnumber){this.number=number;}}以上是两个很普通的Java对象。下面将写测试代码,将一个Person对象转成xml;然后再从xml转成Java对象。在cn包下面建立一个Main.java,代码如下:packagecn;importcom.thoughtworks.xstream.XStream;publicclassMain{/***@paramargs*/publicstaticvoidmain(String[]args){XStreamxstream=newXStream();xstream.alias("person",Person.class);xstream.alias("phonenumber",PhoneNumber.class);Personjoe=newPerson("Joe","Walnes");joe.setPhone(newPhoneNumber(123,"1234-456"));joe.setFax(newPhoneNumber(123,"9999-999"));Stringxml=xstream.toXML(joe);System.out.println(xml);PersonnewJoe=(Person)xstream.fromXML(xml);System.out.println(newJoe.getFirstname());}第6页共34页XStream使用文档}3.3运行测试类运行上面的Main.java类,输出结果如下:3.4代码解析下面主要对Main.java中的main方法进行详细地解析.XStreamxstream=newXStream();直接实例化一个XStream对象,不用任何参数。这个时候XSteam内部会使用KXml2的解析工具。也就是上面添加的kxml2-2.3.0.jar包。如果不需要使用这个包的话,可以用JAXP的包等。例如:XStreamxstream=newXStream(newDomDriver());XStreamxstream=newXStream(newStaxDriver());继续下面的代码:xstream.alias("person",Person.class);xstream.alias("phonenumber",PhoneNumber.class);这两句表示对于xml中的每个结点,所映射的Java类。也就是person结点映射...