XStream(可把javabean转换成XMI的小工具)|学习笔记

开发者学堂课程【Ajax:XStream(可把javabean转换成XMI的小工具)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/31


XStream可以把JavaBean转换为(序列化为)xm1。

 

 XStream的jar包

 

核心JAR包: xstzeam-1.4.7.jar:

 

必须依赖包: xpp3_min-1.1.4c (xz Pull Parser,一款速度很快的x江解析器) :

 

使用步骤:

 

XStream xstream = new XStream() ;

 

String xmlStr . xstream. toXML (j avabean) ;

 

为演示XStream的作业,需要写两个类,分别是Province和City。

 

例如

City.java

 

public class City {

 

private String name ;

 

private String description;

 

Province.java

 

public class Province {List<Province

 

private String name;

 

private List<city> cities = new ArrayList <city>();

 

public void addcity(City city) {

 

cities.add (city) ;

 

演示XStream

 

//返回javabean集合

 

public List<Province> getProinvceList() I

 

Province p1 new Province() ;

 

p1.setName ("北京") ;

 

p1. addcity (new city ("东城区", "DongChengQu")) ;

 

p1.addcity(new city("昌平区", "ChangPingQu")) ;

 

Province p2 new Province () ;

 

p2.setName ("辽宁") ;

 

p2.addcity (new city("沈阳", "shenYang"));

 

p2.addcity (new City("葫芦岛","huLuDao")) ;

 

List<Province> provinceLigtE new ArrayList <Province> () ;provincelist.add(p1) ;

 

provinceList.add(p2) ;

 

return provincelist;这样就可以轻易返回集合。

 

接下来创建XStream对象

 

调用toXML把集合转换成xm1字符串

 

第一步xstream xstream F new XStream() ;

 

第二步string s = xstream. toXML (prolist) ;

 

System. out.print1n(s) ;

 

结果这些字符串变成

 

<list>

 

<cn. itcast. demo1. Province>

 

<name>北京</ name>

 

<cities>

 

<cn. itcast . demo1.City>

 

<name〉东城区</name>

 

<description>DongChengQu</description>

 

</cn. itcast.demo1.city>

 

<cn. itcast.demo1.City>

 

<name>昌平区</ name>

 

<description>ChangPi ngQu</ description>

 

</cn. itcast.demo1.city>

 

</cities>

 

</cn.itcast.demo1.Province

 

demo1. Province>

 

<name>辽宁</name>

 

<cities>

 

<en. itcast.demo1.city>

 

<name>沈阳</name>

 

<nameruuasenshenyenae/description></cn. itcast.demo1.city>

 

<cn. itcast.demo1.city>

 

<name>葫芦岛</ name>

 

: de cription>huluDaodescription><descxapt.aemo1.city>

 

</cn. itcast.demo Province>

 

〈list〉

 

List类型显示为list

 

对象显示成类名,它元素的名称为类的完整名。

 

別名(alias)

 

希望:

 

默认List类型对应<1ist>元素,希望让List类型対立<china>元素

 

默认province类型对应<cn. itcast . demo1. province>,希望让它对应<province>、

 

默认city类型对应<cn. itcast .demo1.city>,希望它对应<city>元素

 

要给指定的类型指定别名

 

xstream.alias ("china", List.class) ;/ /给List类型指定别名为china

 

xstream.alias ("province", Province . class) ;//给province指定别名为pzovince

 

xstream.alias("city", city. class);//给city类型指定别名为city

 

string s = xstream. toXML (proList) ;

 

默认javabean的属性都会生成子元素,而现在希望生成元素的属性。

 

要把Province类型的name属性,生成province元素的属性。

 

光写name是不可以的,必须指定类型,之后字符串也会发生相应的变化。

 

去除cities这样的collection类型的属性

去除province类的名为cities的list类型的属性!

去除list类型的属性,只把list的元素生成xml元素

 

要是想去掉不想要的javabean属性,也就是让某引起javabean属性,不生成对应的xml元素

让city类的,名为describtion属性不生成对应的xml元素,xstream. omitField(city.class, "description");

结果就变为

<china>

 

 <province name=“北京”>

 

   <city>

 

     <name>东城区</name>

 

</city>

 

<city>

 

  <name>昌平区</name>

 

 </city>

 

</province >

 

<province name="辽宁">

 

  <city>

 

     <name>沈阳< 1 name>

 

</city>

 

<city>

 

   <name>葫芦岛</ name>

 

 </city>

 

 </province>

 

</china>

 

总结:

XStream的使用细节:

别名:把类型对应的元素名修改了

 

xstream.alias ("china", List .clas3):让List类型生 成的元素名为china

 

> xstream. alias ("province", Province. class):让Province类型 生成的元素名为province

 

使用为属性:默认类的成员,生成的是元素的子元素!我们希望让类的成员生成元素的属性

 

> xstream. useAttributeFor (Province.class, "name"): 把Province类的名 为name成员,生成<province> 元素的name属性

 

去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个 元素

 

> xstream. addImplicitCollection (Province.class, "cities"): 让Province类的名为cities (它是List类型的,它的内容还会生成元素)的成名不生成元素去除类的指定成名,让其不生成xm1元素

 

> xstream. omitField(City.class, "description"): 在生成的xml中不会出现City类的名为description的对应的元素!

 

 

上一篇:《C++语言基础》实践参考——指向学生类的指针


下一篇:C++基础教程(四)——指针(3)