java xml反序列化_用 XStream 序列化/反序列化 XML 为 Java 对象(实例)

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值