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

简介: 快速学习XStream(可把javabean转换成XMI的小工具)

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

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


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

 

XStreamjar

 

核心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的作业,需要写两个类,分别是ProvinceCity

 

例如

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类的名为citieslist类型的属性!

去除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的对应的元素!

 

 

相关文章
|
fastjson 前端开发
巧用fastjson自定义序列化类实现字段的转换
项目中突然需要增加另一个字段的查找,而这个查找需要查另一张表的记录。 但现在产品很多地方都要增加该字段,如何最快的实现该功能呢。 办法如下: 通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。
5533 0
|
27天前
|
缓存 安全 Java
你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案
你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案
27 0
|
6月前
|
JSON Java fastjson
简单实现_实体类与Json字符串互相转换
简单实现_实体类与Json字符串互相转换
55 1
|
8月前
|
SQL Java 数据库连接
第一季:11MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办【Java面试题】
第一季:11MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办【Java面试题】
95 0
|
XML 数据格式
使用XStream进行对象和xml的转换,极度舒适
使用XStream进行对象和xml的转换,极度舒适
124 0
使用XStream进行对象和xml的转换,极度舒适
|
XML 前端开发 Java
XStream(可把javabean转换成XMI的小工具)|学习笔记
快速学习XStream(可把javabean转换成XMI的小工具)
|
Java 数据格式 XML
使用dozer实现对象转换
Dozer的github地址:https://github.com/DozerMapper/dozer Dozer的官方文档:http://dozer.sourceforge.net/ 什么是DozerDozer是一个JavaBean映射工具库。
1332 0
|
Java 测试技术 Spring
为什么不推荐使用BeanUtils属性转换工具
之前在专栏中讲过“不推荐使用属性拷贝工具”,推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。
为什么不推荐使用BeanUtils属性转换工具
|
缓存 安全 Java
你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案!
第一次看到 MapStruct 的时候, 我个人非常的开心。因为其跟我内心里面的想法不谋而合。
187 0
你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案!
|
JSON Java 数据格式
将Json对象转成JAVA Bean对象的实用工具 —— JsonLube
JsonLube用于将Json对象转成JAVA Bean对象,不同于传统在运行时进行反射的方式,JsonLube采用在编译时自动生成解析Json的代码,使用方式依然简单,然而在移动平台上却可以收获更好的性能。