Xstream学习笔记.docx

上传人:b****3 文档编号:4188443 上传时间:2023-05-06 格式:DOCX 页数:31 大小:22.04KB
下载 相关 举报
Xstream学习笔记.docx_第1页
第1页 / 共31页
Xstream学习笔记.docx_第2页
第2页 / 共31页
Xstream学习笔记.docx_第3页
第3页 / 共31页
Xstream学习笔记.docx_第4页
第4页 / 共31页
Xstream学习笔记.docx_第5页
第5页 / 共31页
Xstream学习笔记.docx_第6页
第6页 / 共31页
Xstream学习笔记.docx_第7页
第7页 / 共31页
Xstream学习笔记.docx_第8页
第8页 / 共31页
Xstream学习笔记.docx_第9页
第9页 / 共31页
Xstream学习笔记.docx_第10页
第10页 / 共31页
Xstream学习笔记.docx_第11页
第11页 / 共31页
Xstream学习笔记.docx_第12页
第12页 / 共31页
Xstream学习笔记.docx_第13页
第13页 / 共31页
Xstream学习笔记.docx_第14页
第14页 / 共31页
Xstream学习笔记.docx_第15页
第15页 / 共31页
Xstream学习笔记.docx_第16页
第16页 / 共31页
Xstream学习笔记.docx_第17页
第17页 / 共31页
Xstream学习笔记.docx_第18页
第18页 / 共31页
Xstream学习笔记.docx_第19页
第19页 / 共31页
Xstream学习笔记.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Xstream学习笔记.docx

《Xstream学习笔记.docx》由会员分享,可在线阅读,更多相关《Xstream学习笔记.docx(31页珍藏版)》请在冰点文库上搜索。

Xstream学习笔记.docx

Xstream学习笔记

Xstream操作Xml与Json

1.Xstream介绍1

(1)Xstream介绍1

(2)Xstream的简单例子1

2.Xstream的基本使用2

(1)Xstream序列化XML2

(2)Xstream序列化Json3

3.Xstream序列化重命名3

(1)为包重命名:

Xstream.aliasPackage()方法3

(2)为类重命名:

Xstream.alias()方法3

(3)为字段重命名:

Xstream.aliasField()方法4

(4)省略集合根节点:

Xstream.addImplicitCollection()方法4

(5)把字段节点设置成属性:

Xstream.useAttributeFor()方法5

(6)隐藏字段:

xstream.omitField()方法5

4.Xstream注解的使用6

(1)设置Xstream应用注解6

(2)重命名注解:

@XStreamAlias()6

(3)省略集合根节点:

@XStreamImplicit7

(4)把字段节点设置成属性:

@XStreamAsAttribute7

(5)隐藏字段:

@XStreamOmitField8

(6)设置转换器:

@XStreamConverter()8

5.Xstream自定义的转换器8

(1)Xstream自带的转换器8

(2)使用自定义的转换器8

(3)常用的转换器接口与抽象类10

6.Xstream对象流的使用10

(1)Xstream对象输出流10

(2)Xstream对象输出流11

7.Xstream持久化API11

(1)保存JavaBean对象11

(2)读取并删除JavaBean对象12

8.Xstream操作Json12

(1)Xstream序列化Json的重命名12

(2)去掉序列化Json的根节点13

(3)Json的解析器区别14

 

作者:

李志伟

时间:

2014-06-30

 

1.Xstream介绍

(1)Xstream介绍

Xstream是一种OXMapping技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁索。

Xstream也可以将JavaBean序列化成Json或反序列化,使用非常方便。

(2)Xstream的简单例子

classPerson//JavaBean实体类

{

privateStringname;

privateintage;

publicPerson(Stringname,intage)

{

this.name=name;

this.age=age;

}

@Override

publicStringtoString()

{

return"Person[name="+name+",age="+age+"]";

}

}

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

XStreamxstream=newXStream();

//XML序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//XML反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

xstream=newXStream(newJettisonMappedXmlDriver());

xstream.setMode(XStream.NO_REFERENCES);

//Json序列化

Stringjson=xstream.toXML(bean);

System.out.println(json);

//Json反序列

bean=(Person)xstream.fromXML(json);

System.out.println(bean);

}

}

程序运行结果:

张三

19

Person[name=张三,age=19]

{"test.Person":

{"name":

"张三","age":

19}}

Person[name=张三,age=19

注意:

Xstream序列化XML时需要引用的jar包:

xstream-[version].jar、xpp3-[version].jar、xmlpull-[version].jar。

Xstream序列化Json需要引用的jar包:

jettison-[version].jar。

使用Xstream序列化时,对JavaBean没有任何限制。

JavaBean的字段可以是私有的,也可以没有getter或setter方法,还可以没有默认的构造函数。

2.Xstream的基本使用

(1)Xstream序列化XML

Xstream序列化XML时可以允许用户使用不同的XML解析器,用户可以使用一个标准的JAXPDOM解析器或自Java6集成StAX解析器。

这样用户就不需要依赖xpp3-[version].jar。

Xstream序列化XML时,也可以对XML节点重命名。

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

//XStreamxstream=newXStream();//需要XPP3库

//XStreamxstream=newXStream(newDomDriver());//不需要XPP3库

XStreamxstream=newXStream(newStaxDriver());//不需要XPP3库开始使用Java6

xstream.alias("人",Person.class);//为类名节点重命名

//XML序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//XML反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

xmlversion="1.0"?

><人>张三19

Person[name=张三,age=19]

(2)Xstream序列化Json

Xstream序列化Json与序列化XML类似,例如:

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

XStreamxstream=newXStream(newJettisonMappedXmlDriver());//设置Json解析器

xstream.setMode(XStream.NO_REFERENCES);//设置reference模型,不引用

xstream.alias("人",Person.class);//为类名节点重命名

//Json序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//Json反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

{"人":

{"name":

"张三","age":

19}}

Person[name=张三,age=19]

3.Xstream序列化重命名

(1)为包重命名:

Xstream.aliasPackage()方法

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

XStreamxstream=newXStream();

xstream.aliasPackage("com.lzw","test");//为包名称重命名

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

张三

19

Person[name=张三,age=19]

(2)为类重命名:

Xstream.alias()方法

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

XStreamxstream=newXStream();

xstream.alias("人",Person.class);//为类名节点重命名

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

<人>

张三

19

Person[name=张三,age=19]

(3)为字段重命名:

Xstream.aliasField()方法

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19);

XStreamxstream=newXStream();

xstream.aliasField("姓名",Person.class,"name");//为类的字段节点重命名

xstream.aliasField("年龄",Person.class,"age");//为类的字段节点重命名

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

<姓名>张三

<年龄>19

Person[name=张三,age=19]

(4)省略集合根节点:

Xstream.addImplicitCollection()方法

classPerson

{

privateStringname;

privateintage;

privateListfriends;

publicPerson(Stringname,intage,String...friends)

{

this.name=name;

this.age=age;

this.friends=Arrays.asList(friends);

}

@Override

publicStringtoString()

{

return"Person[name="+name+",age="+age+",friends="+friends+"]";

}

}

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19,"李四","王五","赵六");

XStreamxstream=newXStream();

xstream.addImplicitCollection(Person.class,"friends");//省略集合根节点

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

张三

19

李四

王五

赵六

Person[name=张三,age=19,friends=[李四,王五,赵六]]

(5)把字段节点设置成属性:

Xstream.useAttributeFor()方法

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19,"李四","王五","赵六");

XStreamxstream=newXStream();

xstream.useAttributeFor(Person.class,"name");//把字段节点设置成属性

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

19

李四

王五

赵六

Person[name=张三,age=19,friends=[李四,王五,赵六]]

(6)隐藏字段:

xstream.omitField()方法

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Personbean=newPerson("张三",19,"李四","王五","赵六");

XStreamxstream=newXStream();

xstream.omitField(Person.class,"friends");//把字段节点隐藏

//序列化

Stringxml=xstream.toXML(bean);

System.out.println(xml);

//反序列化

bean=(Person)xstream.fromXML(xml);

System.out.println(bean);

}

}

程序运行结果:

张三

19

Person[name=张三,age=19,friends=null]

4.Xstream注解的使用

(1)设置Xstream应用注解

使用Xstream注解前需要对Xstream进行配置,可以使用两种方式:

应用某个JavaBean类的注解或自动使用JavaBean类的注解。

代码如下:

XStreamxstream=newXStream();

xstream.processAnnotations(Person.class);//应用Person类的注解

xstream.autodetectAnnotations(true);//自动检测注解

(2)重命名注解:

@XStreamAlias()

@XStreamAlias("人")

classPerson

{

@XStreamAlias("姓名")

privateStringname;

@XStreamAlias("年龄")

privateintage;

@XStreamAlias("朋友")

privateListfriends;

publicPerson(Stringname,intage,String...friends)

{

this.name=name;

this.age=age;

this.friends=Arrays.asList(friends);

}

@Override

publicStringtoString()

{

return"Person[name="+name+",age="+age+",friends="+friends+"]";

}

}

程序运行结果:

<人>

<姓名>张三

<年龄>19

<朋友class="java.util.Arrays$ArrayList">

李四

王五

赵六

Person[name=张三,age=19,friends=[李四,王五,赵六]]

(3)省略集合根节点:

@XStreamImplicit

classPerson

{

privateStringname;

privateintage;

//@XStreamImplicit//只隐藏集合根节点

@XStreamImplicit(itemFieldName="朋友")//设置重复的节点名,可能会导致无法反序列化

privateListfriends;

publicPerson(Stringname,intage,String...friends)

{

this.name=name;

this.age=age;

this.friends=Arrays.asList(friends);

}

@Override

publicStringtoString()

{

return"Person[name="+name+",age="+age+",friends="+friends+"]";

}

}

程序运行结果:

张三

19

<朋友>李四

<朋友>王五

<朋友>赵六

Person[name=张三,age=19,friends=[李四,王五,赵六]]

(4)把字段节点设置成属性:

@XStreamAsAttribute

classPerson

{

@XStreamAsAttribute

privateStringname;

@XStreamAsAttribute

privateintage;

privateListfriends;

publicPerson(Stringname,intage,String...friends)

{

this.name=name;

this.age=age;

this.friends=Arrays.asList(friends);

}

@Override

publicStringtoString()

{

return"Person[name="+name+",age="+age+",friends="+friends+"]";

}

}

程序运行结果:

李四

王五

赵六

Person[name=张三,age=19,friends=[李四,王五,赵六]]

(5)隐藏字段:

@XStreamOmitField

classPerson

{

privateStringname;

privateintage;

@XStreamOmitField

privateListfriends;

publicPerson(Stringname,intage,String...friends)

{

this.name=name;

this.age=age;

this.friends=Arrays.asList(friends);

}

@Override

publicString

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2