package
org.stephencat.test;
import
com.thoughtworks.xstream.
*
;
import
java.util.
*
;
/**
* 测试 XStream 序列化和反序列化
*
@author
stephen.wjj
*
*/
public
class
XStreamTest {
/**
* 测试序列化
*/
public
static
void
TestSerializer(){
System.out.println(
"
===== Testing serializer =====
"
);
Person p1
=
new
Person();
p1.setName(
"
AAA
"
);
Person p2
=
new
Person();
p2.setName(
"
BBB
"
);
Person p3
=
new
Person();
p3.setName(
"
CCC
"
);
Group g
=
new
Group();
g.getPersons().add(p1);
g.getPersons().add(p2);
g.getPersons().add(p3);
g.setName(
"
KFC
"
);
XStream xstream
=
new
XStream();
//
声明标记名称对应的 Java 类
xstream.alias(
"
group
"
, Group.
class
);
xstream.alias(
"
person
"
, Person.
class
);
//
把 Group 的 name 属性视为 XML 属性
xstream.useAttributeFor(Group.
class
,
"
name
"
);
//
忽略 XML 中的 标记
xstream.addImplicitCollection(Group.
class
,
"
persons
"
);
System.out.println(xstream.toXML(g));
}
/**
* 测试反序列化
*/
public
static
void
TestDeserializer(){
System.out.println(
"
===== Testing deserializer =====
"
);
String xml
=
"
"
KFC/
"
>AAABBBCCC
"
;
XStream xstream
=
new
XStream();
//
声明标记名称对应的 Java 类
xstream.alias(
"
group
"
, Group.
class
);
xstream.alias(
"
person
"
, Person.
class
);
//
把 Group 的 name 属性视为 XML 属性
xstream.useAttributeFor(Group.
class
,
"
name
"
);
//
忽略 XML 中的 标记
xstream.addImplicitCollection(Group.
class
,
"
persons
"
);
Group g
=
(Group) xstream.fromXML(xml);
System.out.println(
"
Group name =
"
+
g.getName());
System.out.println(
"
Group has persons =
"
+
g.getPersons().size());
System.out.println(
"
Group persons:
"
);
if
(g.getPersons().size()
>
0
){
Iterator it
=
g.getPersons().iterator();
while
(it.hasNext()){
Person p
=
(Person)it.next();
if
(p
!=
null
){
System.out.println(p.getName());
}
else
{
System.out.println(
"
Err! person instance is null!
"
);
}
}
}
}
/**
*
@param
args
*/
public
static
void
main(String[] args) {
//
TODO Auto-generated method stub
TestSerializer();
TestDeserializer();
}
}