基于XStream的对象序列化实现.doc
文本预览下载声明
基于XStream的对象序列化实现
下载XStream
官网:http://x-stream.github.io/index.html
下载地址:
测试程序
第一个测试程序
class User{
public String id;
public String name;
public Date birthday;
public ListSubject subjects;
@Override
public String toString() {
return User [id= + id + , name= + name + ];
}
}
User user = new User();
user.id = 001;
= 李四;
XStream xstream = new XStream(new DomDriver());
System.out.println(xstream.toXML(user));
// output: me.lanfog.myjava.xstream.Userid001/idname李四/name/me.lanfog.myjava.xstream.User
System.out.println(xstream.fromXML(com.example.Userid001/idname李四/name/com.example.User));
// output: User [id=001, name=李四]
注:Null 属性无法被序列化
别名
xstream.aliasType(USER, User.class);
xstream.aliasField(ID, User.class, id);
xstream.aliasField(NAME, User.class, name);
// output: USERID001/IDname李四/name/USER
忽略
xstream.omitField(User.class, id);
// output: me.lanfog.myjava.xstream.Username李四/name/me.lanfog.myjava.xstream.User
隐含
class Subject{
public String id;
public String name;
@Override
public String toString() {
return Subject [id= + id + , name= + name + ];
}
}
ListSubject subjects = new ArrayListSubject();
Subject subject0 = new Subject();
subject0.id = 01;
= 语文;
subjects.add(subject0);
Subject subject1 = new Subject();
subject1.id = 02;
= 数学;
subjects.add(subject1);
user.subjects = subjects;
// output: com.example.Userid001/idname李四/name
subjects
com.example.Subject
id01/id
name语文/name
/com.example.Subject
com.example.Subject
id02/id
name数学/name
/com.example.Subject
/subjects
/com.example.User
xstream.addImplicitCollection(User.class, subjects, subject, Subject.class);
// output: com.example.Userid001/idname李四/name
subject
id01/id
name语文/name
/subject
subject
id02/id
name数学/name
/subject
/com.example.User
引用
user.subjects.add(subject0);
// output: com.example.Subject reference=../com.example.Subject[2]/
xstream.setMode(XStream.NO_REFERENCE
显示全部