j2ee绿洲

找到属于自己的一片天空
数据加载中……
XStream初体会

首先到http://xstream.codehaus.org下载XStream的最新版本,到目前为止的最新版本为1.1.2,主要改变为提供了一些JDK1.5enum类型支持。下载后,解压,将xstream-1.1.2.jarxpp3_min-1.1.3.4.I.jar复制到项目的lib中,此时就可以使用XStream了。Xpp3XStream提供的一个很有效率的XML pull-parser实现,推荐使用,可以提高解析的效率。

 

 

一、首先,创建要转换的Java类:

public class Person {

 private String firstname;

 private String lastname;

 private PhoneNumber phone;

 private PhoneNumber fax;

 // ... constructors and methods

}

 

 

public class PhoneNumber {

 private int code;

 private String number;

 // ... constructors and methods

}

注意:这里定义的属性都为privateXStream不限制你的属性的可见性,默认所有属性都会进行转换;XStream不要求你必须要有settergetter方法,也不要求你要有一个默认的类构造方法。

 

 

二、初始化XStream

使用以下的语句进行初始化:

XStream xstream = new XStream();

默认采用Xpp3库,如果你不想使用Xpp3这个库,你也可以使用一个标准的JAXP DOM解析器,可以采用以下语句进行初始化:

XStream xstream = new XStream(new DOMDriver()); //不需要Xpp3

xstream实例,为线程安全的,可以供多个线程进行调用,共享使用。

 

 

三、注册要转换的类的别名

初始化XStream后,我们要将要转换的类注册到xstream中,告诉XStream,有哪些类要进行XML转换,注册采用以下的语句:

xstream.alias(“person”, Person.class);

xstream.alias(“phonenumber”, PhoneNumber.class);

当然,这一步不是必须的,如果不进行注册的话,XStream默认会在转换时,将对应类全限定名也加入XML文件中,如com.test.Person,这如果在数据量大的时候,会使生成的XML文件增大不少。

 

 

四、将对象序列化为XML

到这一步,我们就可以将一个Java对象序列化为一个XML文件了,我们先声明一个Person对象,然后加入两条电话号码对象:

Person person = new Person("Chen", "Tao");

joe.setPhone(new PhoneNumber(123, "1234-456");

joe.setFax(new PhoneNumber(123, "9999-999");

接下来,我们将此Person对象转换为XML字符串:

String xml = xstream.toXML(person);

生成的XML字符串为:

<person>

 <firstname>Chen</firstname>

 <lastname>Tao</lastname>

 <phone>

    <code>123</code>

    <number>1234-456</number>

 </phone>

 <fax>

    <code>123</code>

    <number>9999-999</number>

 </fax>

</person>

就这么简单,什么映射文件都不用写,默认XStream已经帮我们做好了。

 

 

五、从XML反序列化出对象

而从一个XML文件中反序列出一个对象也同样非常简单,我们看一下下面的代码:

Person newPerson = (Person) xstream.fromXML(xml);

posted on 2007-06-21 14:23 心情经纬 阅读(292) 评论(0)  编辑  收藏 所属分类: xstream


只有注册用户登录后才能发表评论。


网站导航: