1
XStream
对象相当
Java
对象和
XML
之间的转换器,转换过程是双向的。创建
XSteam
对象
的方式很简单,只需要
new XStream()
即可。
Java
到
xml
,用
toXML()
方法。
Xml
到
Java
,用
fromXML()
方法。
在没有任何默认配置的情况下,
java
到
xml
的映射,是
java
成员名对应
xml
的元素名,
java
类的全名对应
xml
根元素的名字。而实际中,往往是
xml
和
java
类都有了,要完成相互转
换,必须进行别名映射。
别名配置包含三种情况:
1
、类别名,用
alias(String name, Class type)
。
2
、类成员别名,用
aliasField(String alias, Class definedIn, String fieldName)
3
、
类成员作为属性别名,
用
aliasAttribute(Class definedIn, String attributeName, String alias)
,
单独命名没有意义,还要通过
useAttributeFor(Class definedIn, String fieldName)
应用到某个
类上。
XStream Annotation
@XStreamAlias("Alias Name"): used to alias Class name and field
@XStreamAsAttribute(): add attribute for Class
@XStreamImplicit()
或者
@XStreamImplicit(itemFieldName = "Group")
重新指定名字
XML
解析器
1. XPP3 (
需要
xpp3-[version].jar)
XStream xstream = new XStream(new XppDriver());
2. JAXP DOM
XStream xstream = new XStream(new DomDriver());
不指定编码解析器
XStream xstream = new XStream(new DomDriver(
“UTF
-
8”
));
指定编码解析器
XStreamd
的一些小
bug
--
在定义别名中的下划线
“_”
转换为
xml
后会变成
“__”
这个符号
.
因此,
尽量避免在别名中实
用任何符号,却是需要下划线的时候,可以考虑实用连接符
“
-
”
,这个没有问题。
--Java Bean
中常常有一些常量,在转换过程,
XStream
也会将这些常量转换过去,形成常量
的
xml
节点,这显然不是想要的结果,对于常量字段,就不做转换了。