现在的位置: 首页 > 综合 > 正文

XStream初识

2018年02月03日 ⁄ 综合 ⁄ 共 2092字 ⁄ 字号 评论关闭

XStream是一个Java对象和XML相互转换的工具,提供了所有的基础类型、数组、集合等类型直接转换的支持。

XStream对象相当于Java对象和XML之间的转换器,转换过程是双向的,不用任何映射就能实现多数 Java
对象的序列化,
在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。

使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从
XML 或者 XML Schema Definition (XSD) 文件生成类。 

和其他序列化工具相比,XStream 有三个突出的特点: 

1、XStream 不关心序列化/逆序列化的类的字段的可见性。 
2、序列化/逆序列化类的字段不需要 getter 和 setter 方法。 
3、序列化/逆序列化的类不需要有默认构造函数。 

所以,不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类 

来个快速入门教程,英文地址:http://xstream.codehaus.org/tutorial.html

两分钟教程

这是一个关于XStream快速的介绍。快速浏览一下你会马上知道把一个对象转换到XML或是转换回来是多么的简单。你肯定会碰到下面的问题。

创建能够序列化的类

这是一组简单的类。XStream能把这些类的实例转换到XML或是转换回来。

public class Person { 

 private String firstName;
 private String lastName;
 private PhoneNumber phonex;
 private PhoneNumber fax;
//构造函数或是其他方法 
} 

public class PhoneNumber { 

 private int code;
 private int number; 

//构造函数或是其他方法
}

:注意到这些都是私有变量。XStream不关心变量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默认的构造函数。

实例化XStream

使用XStream,简单实例化XStream类:

XStream xStream = new XStream(); 

你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。

XStream xStream = new XStream(new DomDriver());//不需要XPP3库 

:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。

现在,为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。

xStream.alians("person",Person.class); 

:这是可选的一步。没有这步XStream也可以很好的起作用,但是XML元素的名字就会包含每个类的全称(包括包名),这将会使生成XML稍大。

序列号一个对象到XML

让我们创建一个Person的实例并且填充它的变量域:

Person joe = new Person("Joe","Walnes"); 

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

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

现在转换到XML,你要做的是简单的调用XStream:

String xml = xstream.toXML(joe); 

生成的XML看上去像这样:

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person> 

非常简单,像创建XML一样。

从XML反序列化一个对象

从XML重新构造一个对象:

Person newJoe = (Person)xStream.fromXML(xml); 

XStream是多么的简单啊!

总结:

使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名;

使用xStream.toXML(Object obj)转换对象到XML;

使用xStream.fromXML(String xml)转换XML到对象;

项目中使用xml保存元数据,
消耗元数据时,涉及到解析xml,保存为javabean,供应用使用;
制造元数据时,会收集表单内容,保存为JavaBean,最后存入xml。
xmlstream近乎完美地解决了这个问题,省去了我们生成和解析xml的麻烦。
xmlsteam还支持注解,下次再介绍。

抱歉!评论已关闭.