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

 

 

相关文章
|
12月前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能社交媒体内容分析
使用Python实现深度学习模型:智能社交媒体内容分析
1002 69
|
10月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
290 1
|
机器学习/深度学习 数据采集 传感器
使用Python实现深度学习模型:智能空气质量监测与预测
【8月更文挑战第21天】 使用Python实现深度学习模型:智能空气质量监测与预测
1227 3
|
机器学习/深度学习 监控 算法
Keras进阶:模型调优与部署
该文介绍了Keras模型调优与部署的策略。调优包括调整网络结构(增减层数、改变层类型、使用正则化)、优化算法与参数(选择优化器、学习率衰减)、数据增强(图像变换、噪声添加)、模型集成(Bagging、Boosting)和超参数搜索(网格搜索、随机搜索、贝叶斯优化)。部署涉及模型保存加载、压缩(剪枝、量化、蒸馏)、转换(TensorFlow Lite、ONNX)和服务化(TensorFlow Serving、Docker)。文章强调了持续监控与更新的重要性,以适应不断变化的数据和需求。【6月更文挑战第7天】
388 8
|
机器学习/深度学习 自然语言处理 大数据
社交媒体的情感分析大数据模型
构建基于大数据的情感分析模型,利用Python和机器学习处理社交媒体数据。情感分析识别文本情感倾向,助力市场洞察和舆情监控。技术栈包括Python、NLP库(nltk, spaCy, TextBlob, VADER)、Scikit-learn、TensorFlow/PyTorch及大数据工具。数据收集(如Twitter API)、预处理(去除噪声、分词)、特征提取(TF-IDF、词嵌入)、模型训练(逻辑回归、BERT)是关键步骤。模型能捕捉文本情感,支持决策,随着技术进步,应用前景广阔。
1593 10
|
存储 缓存 前端开发
【React】Hooks面试题集锦
本文集合一些React的Hooks面试题,方便读者以后面试查漏补缺。作者给出自认为可以让面试官满意的简易答案,如果想要了解更深刻,可以点击链接查看对应的详细博文。在此对链接中的博文作者非常感谢🙏。
484 1
|
算法 数据挖掘 计算机视觉
OpenCV中应用尺度不变特征变换SIFT算法讲解及实战(附源码)
OpenCV中应用尺度不变特征变换SIFT算法讲解及实战(附源码)
183 0
|
UED 内存技术
LPDDR4与LPDDR4X介绍01
LPDDR4与LPDDR4X介绍01
848 0
【python】eval()函数的使用与讲解
【python】eval()函数的使用与讲解
|
移动开发 Java 开发工具
Android(四) 基于 eclipse 的 Android配置 汇总篇
Android(四) 基于 eclipse 的 Android配置 汇总篇
243 0