论坛首页 入门技术论坛

XStream的学习

浏览 5082 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-05-09   最后修改:2008-11-18
XStream用途:可以将Java对象序列化成xml,反过来也可以将xml文件反序列化成java对象
XStream使用过程:
1、从http://xstream.codehaus.org/download.html下载最新版本的Xstream(当前为1.3版本);
2、这里定义了一些简单的类
public class Person{
   private String name;
   private String sex;
   private int age;
   private PhoneNumber phone;
   //...constructors and methods
}
public class PhoneNumber{
   private String  code;
   private String number;
   //...constructors and methods

}
注意:字段为private ,可以不用定义setters和getters,XStream对定义构造函数没有限制
3、初始化XStream
import com.thoughtworks.xstream.*;

XStream xstream = new XStream();
此时你如果将xstream-[version]。jar和xpp3-[version]的路径添加到classpath中,这该xstream将会使用xpp3作为解析器,xpp3是最快的
xml解析器,如果不想对xpp3有产生依赖,可以使用使用标准的JAXP DOM 解析器代替。

此时要import com.thoughtworks.xstream.io.XML.DomDriver;
可修改为XStream xstream = new XStream(new DomDriver());

4、序列化对象成XML
Person person =new Person("XP","male",29);//自己定义的构造函数
person.setPhoneNumber(new PhoneNumber("027","88386666"));
现在就可以将person转为XML,只要调用
String xml = xstream.toXML(person);
结果文档是这样的:
<person>
   <name>XP</name>
   <sex>male</sex>
   <age>29</age>
   <phone>
     <code>027</code>
     <number>88386666</number>
    </phone>
</person>

5、从XML反序列化成java对象
可以这样写:
Person newPerson = (Person)xstream.fromXML(xml);(xml为XML文件的路径);
ok!使用XStream确实很方便
   发表时间:2009-02-25  
  将一个列表对象序列化进一个xml文件,没有问题,但是,要把它再反序列化出来,有什么好的办法,我看网上都是反序列化一个对象的写法,对于一个xml文件中含有多个的,却没有,这样的应该如何呢?
将列表序列化后xml文件如下:

<list>
  <com.wck.study.xmlTest.XStreamTest.Employee>
    <name>Jack</name>
    <designation>Manager</designation>
    <department>Finance</department>
  </com.wck.study.xmlTest.XStreamTest.Employee>
  <com.wck.study.xmlTest.XStreamTest.Employee>
    <name>王飞0</name>
    <designation>你好!大家好。0</designation>
    <department>Finance0</department>
  </com.wck.study.xmlTest.XStreamTest.Employee>
  <com.wck.study.xmlTest.XStreamTest.Employee>
    <name>王飞1</name>
    <designation>你好!大家好。1</designation>
    <department>Finance1</department>
  </com.wck.study.xmlTest.XStreamTest.Employee>
  <com.wck.study.xmlTest.XStreamTest.Employee>
    <name>王飞2</name>
    <designation>你好!大家好。2</designation>
    <department>Finance2</department>
  </com.wck.study.xmlTest.XStreamTest.Employee>
  <com.wck.study.xmlTest.XStreamTest.Employee>
    <name>王飞3</name>
    <designation>你好!大家好。3</designation>
    <department>Finance3</department>
  </com.wck.study.xmlTest.XStreamTest.Employee>
</list>

这样的怎么序列化为一个对象列表?
1 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics