bokee.net

软件工程师博客

正文 更多文章

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);

分享到:

上一篇:天才 Rod Johnson

下一篇: Google查询的全过程

评论 (10条) 发表评论

  • fwrwr : [url=]木材深加工[/url] 木材深加工 [url=]桉树除草及病虫害防冶[/url] 桉树除草及病虫害防冶 [url=]废弃资源综合利用[/url] 废弃资源综合利用 [url=]有机无机复混肥[/url] 有机无机复混肥 [url=]旅游基地招商开发[/url] 旅游基地招商开发

    2011-04-20 17:14

发表评论
验证码