开发者社区> xaubllxwtvaqiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 快速学习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的对应的元素!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
XStream(可把javabean转换成XMI的小工具)|学习笔记
快速学习XStream(可把javabean转换成XMI的小工具)
9 0
Java基础之Stream
  流表示一系列元素并支持不同类型的操作来对这些元素执行计算。在Java 8中,Collection接口有两种方法来生成Stream   stream()parallelStream()   流操作包括中间或终端,中间操作返回一个流,所以我们可以链接多个中间操作而不使用分号。 终端操作是void的或返回非流结果。   Stream是可以执行顺序和并行聚合操作的一系列元素 。 任何给定的“Stream”都可能有无限量的数据流过它。 你所得到的结果是从“Stream”接收的数据在到达时被单独处理,而不是完全对数据执行批处理。 当与lambda表达式 结合时,它们提供了使用函数方法对数据序列执
30 0
Java8-Stream-No.06
import java.io.IOException; import java.math.BigDecimal; import java.util.Arrays; import java.
782 0
Java8-Stream-No.04
import java.util.OptionalInt; import java.util.stream.IntStream; public class Streams4 { public static void main(String[] args) { ...
638 0
Java8学习(4)-Stream流
Stream和Collection的区别是什么 流和集合的区别是什么? 粗略地说, 集合和流之间的差异就在于什么时候进行计算。集合是一个内存中的数据结构,它包含数据结构中目前所有的值--集合中的每个元素都得先计算出来才能添加到内存里。
1156 0
Java8-Stream-No.09
import java.util.Arrays; public class Streams9 { public static void main(String[] args) { Arrays.
646 0
【java】Stream的使用
首先,给大家推荐一个好的地方:http://ifeve.com/stream/ 可以好好学一下 接下来,今天要删除数组中的某些元素,想到了之前用过的这个JDK8的Stream   1.Array转化为Stream并进行筛选 【有个坑】:数组转化为Stream有两种方式   1.Stream.of(数组)   2.Arrays.stream(数组)   区别:两种都支持引用数据类型,但是如果是基本数据类型的话,请选择第二种,所以妥善期间使用第二种比较合适。
963 0
Java 8 Lambda表达式和Stream操作
Lambda表达式的语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } 方法引用 方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用,通过实例对象::实例方法,如 str::substring 也可以类名::实例方法名, 如 String::substring 构造方法引用,通过类名::new, 如 User::new 第三点: 若Lambda 的参数列表的第一个参数,
16 0
4101
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载