XStream序列化JAVA对象为XML以及反序列化

XStream是一个简单的类库,可以序列化对象到xml,还可以将xml还原为对象。

XStream官网:http://xstream.codehaus.org/

附件提供XStream和xpp3相关的jar下载:

为了使用XStream,需要对其初始化,初始化方法有两种:

方法一:直接初始化XStream 

XStream xstream = new XStream();

这种方式的初始化需要xpp3-[version].jar的支持。xpp是一个快速解析XML文件的解析器。

方法二:依赖XPP3.jar的支持,使用标准的JAXP DOM来解析

应网友的要求增加了数组对象的序列化测试,不过我测试时没有设置mode参数也可以正常序列化

同时这里对mode参数做个简单的说明:

在XStream序列化或反序列化对象时,它会创建两个类MarshallingContext和UnmarshallingContext,由
它们来处理数据,以及委派合适的转换器。XStream提供了三对上下文的缺省实现,它们之间有着细微的差别。缺省值可以通过方法
XStream.setMode()来改变,需要传递下面参数中的一个:

  • XStream.XPATH_RELATIVE_REFERENCES:(缺省)通过XPath引用来标识重复的引用,使用相对路径表示。
  • XStream.XPATH_ABSOLUTE_REFERENCES:通过XPath引用来标识重复的引用,使用绝对路径表示。
  • XStream.ID_REFERENCES:使用ID引用来标识重复的引用。在一些场合(手写XML时),将会更易于操作
  • XStream.NO_REFERENCES:这种情况将失去对图形对象的支持,仅把对象看作为树型结构。重复的引用被视作两个不同的对象,循环引用会导致异常产生。相对于上面两种模式,这种模式速度会更快,占用内存会更

下面简单的例子包括三个类:UserBean.java,ContactBean.java,XstreamTestMain.java代码如下:

xstream测试类:XstreamTestMain.java

测试UserBean:UserBean.java :

测试ContactBean :ContactBean.java

运行测试代码,打印结果如下:

生成的XML文件userbean.xml:

到此测试例子结束,是不是觉得很方便啊,吼吼。

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/opensource/xstream-java-xml/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">