对象与XML互转的利器xstream的示例分析

  介绍

小编给大家分享一下对象与XML互转的利器XStream的示例分析,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

, XStream是大名鼎鼎的思想工作下的一个开源项目,主要功能是提供Java bean和XML文本之间的转换,另外还提供Java bean和JSON之间的转换,这个不在本次讨论的范围内。
在JAVA1.5以后XSteam也支持了注释。这时就只要在Java bean中添加若干注释就可以了,当然如果不允许修改Java bean,那XStream也提供注册的方式,也是很简单的。通过几个方面具体说明一下:
1。基本转换,
2。使用别名;
3。处理属性;
4。处理列表类型属性;
5。属性不参与转换,

1。基本转换
这是一个普通的JAVA bean:

package  xstreamTest;,,   public  class  Person  {,,   ,,,private  String 名字,,,   ,,,private  int 年龄;,,   ,,   ,,,public  int  getAge (), {,,   ,,,,,,,return 年龄;,,   ,,,},,   ,,   ,,,public  void  setAge (int 年龄),{,,   ,,,,,,,=,this.age 年龄;,,   ,,,},,   ,,   ,,,public  void  setName (String 名称),{,,   ,,,,,,,this.name =,名字,,,   ,,,},,   ,,   ,,,public  String  getName (), {,,   ,,,,,,,return  this.name;,,   ,,,},,   }

转换代码是这样的:

XStream  XStream =, new  XStream ();,,   Person  Person =, new 人(),,,   person.setName (“pli");,,   person.setAge (18);,,   System.out.println (xstream.toXML(人)),

我们得到了这样的结果:

& lt; xstreamTest.Person>,,   & lt;才能name> pli</name>,,   & lt;才能age> 18 & lt;/age>,,   & lt;/xstreamTest.Person>

但是有时候根标签不想使用包路径,如何搞呢,使用别名

2。起别名
家丁我们希望xstreamTest将”。人”这个莫名其妙的元素标签改为“人”我们应该这么做。

package  xstreamTest;,,   @XStreamAlias (“person"),,   public  class  Person  {,,   ,,,private  String 名字,,,   ,,,private  int 年龄;,,   ,,   ,,,public  int  getAge (), {,,   ,,,,,,,return 年龄;,,   ,,,},,   ,,   ,,,public  void  setAge (int 年龄),{,,   ,,,,,,,=,this.age 年龄;,,   ,,,},,   ,,   ,,,public  void  setName (String 名称),{,,   ,,,,,,,this.name =,名字,,,   ,,,},,   ,,   ,,,public  String  getName (), {,,   ,,,,,,,return  this.name;,,   ,,,},,   }

而执行代码会变成这样:

XStream  XStream =, new  XStream ();,,   xstream.autodetectAnnotations(真正的),,,   Person  Person =, new 人(),,,   person.setName (“pli");,,   person.setAge (18);,,   System.out.println (xstream.toXML(人)),

这样我们就得到了想要的:

& lt; person>,,   & lt;才能name> pli</name>,,   & lt;才能age> 18 & lt;/age>,,   & lt;/person>

3。处理属性
如果想要将JAVA bean中的“年龄”属性作为XML中人标签的一个属性该怎么办呢。
这里介绍另外一个注释:@XStreamAsAttribute,我们的JAVA bean变成了这样:

@XStreamAlias (“person"),,   public  class  Person  {,,   ,,,private  String 名字,,,   ,,,@XStreamAsAttribute ,   ,,,private  int 年龄;,,   ,,,,,   ,,,public  int  getAge (), {,,   ,,,,,,,return 年龄;,,   ,,,},,   ,,   ,,,public  void  setAge (int 年龄),{,,   ,,,,,,,=,this.age 年龄;,,   ,,,},,   ,,   ,,,public  void  setName (String 名称),{,,   ,,,,,,,this.name =,名字,,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

对象与XML互转的利器xstream的示例分析