简单使用XStream
Stream
1.什么作用
*可以把JavaBean转换为(序列化为)xml
2.XStream的jar
*核心jar:xstream-1.4.7.jar
*必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的xml解析器)
3、使用步骤
*XStream xstream=new XStream();
*String xmlStr=xstream.toXML(javabean);
4、使用细节:
*别名,把类型对应的元素名修改了
>xstream.alias("china",List.class):让List类型生成的元素名为china
>xstream.alias("province",Province.class):让Province类型生成的元素名为province
*使用为属性:默认类的成员,生成的是元素的子元素!我们希望让类的成员生成属性
>xstream.useAttributeFor(Province.class,"name"):把Province类的名为name成员,生成<province>元素的属性
*去除Collection类型的成员:我们只需要Collection的内容,而不需要Collection本身也生成一个元素
>xstream.addImplicitCollection(Province.class,"cities");:让Province类的名为cities(它是List类型,它的内容还会生成元素)的属性不生成元素
*去除类的指定成名,让其不生成xml元素
>xstream.omitField(City.class,"description"):在生成的xml中不会生成City类中的名为description的元素
package cn.itcast.demo1;
public class City {
private String name;//市民
private String description;//描述
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public City(String name, String description) {
super();
this.name = name;
this.description = description;
}
public City() {
super();
}
@Override
public String toString() {
return "City [name=" + name + ", description=" + description + "]";
}
}
City.java
package cn.itcast.demo1; import java.util.ArrayList;
import java.util.List; public class Province {
private String name;
private List<City> cities=new ArrayList<City>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<City> getCities() {
return cities;
}
public void setCities(List<City> cities) {
this.cities = cities;
}
public Province(String name, List<City> cities) {
super();
this.name = name;
this.cities = cities;
}
public Province() {
super();
// TODO Auto-generated constructor stub
} public void addCity(City city){
cities.add(city);
} }
Province.java
package cn.itcast.demo1; import java.util.ArrayList;
import java.util.List; import org.junit.Test; import com.thoughtworks.xstream.XStream; public class Demo1 {
public List<Province> getProvinceList(){
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> provinceList=new ArrayList<Province>();
provinceList.add(p1);
provinceList.add(p2);
return provinceList;
}
/*
<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>ChangPingQu</description>
</cn.itcast.demo1.City>
</cities>
</cn.itcast.demo1.Province>
<cn.itcast.demo1.Province>
<name>辽宁</name>
<cities>
<cn.itcast.demo1.City>
<name>沈阳</name>
<description>shenYang</description>
</cn.itcast.demo1.City>
<cn.itcast.demo1.City>
<name>葫芦岛</name>
<description>huLuDao</description>
</cn.itcast.demo1.City>
</cities>
</cn.itcast.demo1.Province>
</list>
*/
@Test
public void fun1(){
List<Province> proList=getProvinceList();
/*
* 创建XStream对象
* 调用toXML将集合转换成字符串对象
*/
XStream xstream=new XStream();
String s=xstream.toXML(proList);
System.out.println(s); }
/*
* 别名(alias)
* 希望:
* 默认List类型对应<list>元素,让List类型对应<china>元素
* 默认Province类型对应<cn.itcast.demo1.province>,希望它对应<province>
* 默认City类型对应<cn.itcast.demo1.City>,希望它对应<city>
*/
/*
<china>
<province>
<name>北京</name>
<cities>
<city>
<name>东城区</name>
<description>DongChengQu</description>
</city>
<city>
<name>昌平区</name>
<description>ChangPingQu</description>
</city>
</cities>
</province>
<province>
<name>辽宁</name>
<cities>
<city>
<name>沈阳</name>
<description>shenYang</description>
</city>
<city>
<name>葫芦岛</name>
<description>huLuDao</description>
</city>
</cities>
</province>
</china>
*/
@Test
public void fun2(){
List<Province> proList=getProvinceList();
XStream xstream=new XStream();
/*
* 给指定的类型指定别名
*/
xstream.alias("china",List.class);
xstream.alias("province", Province.class);
xstream.alias("city", City.class);
String s=xstream.toXML(proList);
System.out.println(s);
} /*
* 默认javabean的属性都会生成子元素,而现在希望生成元素的属性
*/
/*
<china>
<province name="北京">
<cities>
<city>
<name>东城区</name>
<description>DongChengQu</description>
</city>
<city>
<name>昌平区</name>
<description>ChangPingQu</description>
</city>
</cities>
</province>
<province name="辽宁">
<cities>
<city>
<name>沈阳</name>
<description>shenYang</description>
</city>
<city>
<name>葫芦岛</name>
<description>huLuDao</description>
</city>
</cities>
</province>
</china>
*/
@Test
public void fun3(){
List<Province> proList=getProvinceList();
XStream xstream=new XStream(); xstream.alias("china", List.class);
xstream.alias("province", Province.class);
xstream.alias("city", City.class); /*
* 把Province类型的name属性生成province元素的属性
*/
xstream.useAttributeFor(Province.class, "name"); String s=xstream.toXML(proList);
System.out.println(s);
} /*
<china>
<province name="北京">
<city>
<name>东城区</name>
<description>DongChengQu</description>
</city>
<city>
<name>昌平区</name>
<description>ChangPingQu</description>
</city>
</province>
<province name="辽宁">
<city>
<name>沈阳</name>
<description>shenYang</description>
</city>
<city>
<name>葫芦岛</name>
<description>huLuDao</description>
</city>
</province>
</china>
*/
/*
* 去除List类型的属性,只把list中的元素生成xml元素
*/
@Test
public void fun4(){
List<Province> proList=getProvinceList();
XStream xstream=new XStream(); xstream.alias("china", List.class);
xstream.alias("province", Province.class);
xstream.alias("city", City.class);
xstream.useAttributeFor(Province.class, "name"); /*
* 去除<cities>这样的Collection类型的属性
* 去除Province类的名为cities的List类型的属性
*/
xstream.addImplicitCollection(Province.class, "cities");
String s=xstream.toXML(proList);
System.out.println(s);
} /*
<china>
<province name="北京">
<city>
<name>东城区</name>
</city>
<city>
<name>昌平区</name>
</city>
</province>
<province name="辽宁">
<city>
<name>沈阳</name>
</city>
<city>
<name>葫芦岛</name>
</city>
</province>
</china>
*/
/*
* 去除不想要的javabean属性
* 就是让某些javabean属性不生成xml元素
*/
@Test
public void fun5(){
List<Province> proList=getProvinceList();
XStream xstream=new XStream(); xstream.alias("china", List.class);
xstream.alias("province", Province.class);
xstream.alias("city", City.class);
xstream.useAttributeFor(Province.class, "name");
xstream.addImplicitCollection(Province.class, "cities"); /*
* 让City类的,名为description属性不生成对应的xml元素
*/
xstream.omitField(City.class, "description");
String s=xstream.toXML(proList);
System.out.println(s);
} }
Demo1.java
简单使用XStream的更多相关文章
- 使用XStream是实现XML与Java对象的转换(1)--简介及入门示例
一.简单介绍 XStream是thoughtworks开发的开源框架,用于实现XML数据于Java对象.Json数据的转换.它不需要schema或其他的mapping文件就可以进行java对象和xml ...
- XStream使用笔记
XStream是一个可以将JavaBean生成XML的工具,很方便的帮助我们在后台服务器将数据序列化为XML,接下来就可以将XML数据响应给前台进行数据交互 XStream需要的jar包 * 核心JA ...
- XStream简单入门
简单的讲,XStream 涉及的就五个知识点:详情参考 官网 混叠,注解,转换器,对象流和操作json! 下面就用几个简单的例子来实现上述五个知识点! 基本步骤: 第1步:创建XStream对象. 通 ...
- JAVA Bean和XML之间的相互转换 - XStream简单入门
JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...
- XStream简单使用01——xml和Ojbect互转
package org.zhb.test; /** * author : zhb * data : 2014-2-14 * use packages: * xmlpull-1.1.3.1.jar * ...
- XStream的使用方法、简单使用方法、xml的解析方法
下面介绍的是在Android Studio中的使用 Android Studio中目前支持的Xstream最高版本是xstream-1.4.7.jar,大家可以在网上下载,我的是在开源中国项目中有这个 ...
- XStream的简单使用
XStream XStream是一个java对象和xml相互转换的工具 创建XStream对象:XStream stream = new XStream() Java对象转换成xml:stream . ...
- 打造完美的xml技术解决方案(dom4j/xstream)
转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...
- Java对象表示方式2:XStream实现对对象的XML化
上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 ...
随机推荐
- android requestLayout()重新请求布局
在应用中有时会遇到,例如你listView 的设置的高度为warp_content 自适应,listView下方有个TextView但如果你删了一个listView的item 我们希望下面的TextV ...
- python selenium - SSL处理(https)
在实际的自动化测试实践中,因为越来越多的站点接入https,使得我们原有的python selenium2自动化测试代码进行测试时,浏览器总是报安全问题,即便在浏览器选项中将被测网址加入信任网址也没用 ...
- Java数据结构-线性表之顺序表ArrayList
线性表的顺序存储结构.也称为顺序表.指用一段连续的存储单元依次存储线性表中的数据元素. 依据顺序表的特性,我们用数组来实现顺序表,以下是我通过数组实现的Java版本号的顺序表. package com ...
- 安装PyTorch 0.4.0
https://blog.csdn.net/sunqiande88/article/details/80085569 https://blog.csdn.net/xiangxianghehe/arti ...
- 【BZOJ2422】Times 树状数组
[BZOJ2422]Times Description 小y作为一名资深的dotaer,对视野的控制有着深刻的研究.每个单位在一段特定的时间内会出现在小y的视野内,除此之外的时间都在小y看不到的地方. ...
- POJ 2856 Y2K Accounting Bug【简单暴力】
链接: http://poj.org/problem?id=2586 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#probl ...
- 【python】-- 内置函数、软件目录开发规范(代码编码风格)
内置函数 一.内置函数表格 二.内置函数演示 1.abs(x) 功能:取数的绝对值 >>> abs(-1) #取-1的绝对值 1 ########################## ...
- unity里standard pbr(一)
关注forwardbase下的 standard.shader #pragma vertex vertBase #pragma fragment fragBase #include "Uni ...
- vue介绍和简单使用
Vue是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易 ...
- anaconda + opencv3
直接运行 pip install opencv-python 或者 pip install opencv-contrib-python 参照如下网页 https://blog.csdn.net/sin ...