XStream-----把JavaBean转换为xml的工具
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>元素的name属性
去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素
xstream.addImplicitCollection(Province.class, "cities"):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
去除类的指定成名,让其不生成xml元素
xstream.omitField(City.class, "description"):在生成的xml中不会出现City类的名为description的对应的元素!
应用实例:
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.thoughtworks.xstream.XStream;
/**
* 演示XStream
*/
public class Demo1 {
// 返回javabean集合
public List<Province> getProinvceList() {
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;
}
@Test
public void fun1() {
List<Province> proList = getProinvceList();
/*
* 创建XStream对象
* 调用toXML把集合转换成xml字符串
*/
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>元素
*/
@Test
public void fun2() {
List<Province> proList = getProinvceList();
XStream xstream = new XStream();
/*
* 给指定的类型指定别名
*/
xstream.alias("china", List.class);//给List类型指定别名为china
xstream.alias("province", Province.class);//给Province指定别名为province
xstream.alias("city", City.class);//给City类型指定别名为city
String s = xstream.toXML(proList);
System.out.println(s);
}
/*
* 默认javabean的属性都会生成子元素,而现在希望生成元素的属性
*/
@Test
public void fun3() {
List<Province> proList = getProinvceList();
XStream xstream = new XStream();
xstream.alias("china", List.class);//给List类型指定别名为china
xstream.alias("province", Province.class);//给Province指定别名为province
xstream.alias("city", City.class);//给City类型指定别名为city
/*
* 把Province类型的name属性,生成<province>元素的属性
*/
xstream.useAttributeFor(Province.class, "name");
String s = xstream.toXML(proList);
System.out.println(s);
}
/*
* 去除List类型的属性,只把list中的元素生成xml元素
*/
@Test
public void fun4() {
List<Province> proList = getProinvceList();
XStream xstream = new XStream();
xstream.alias("china", List.class);//给List类型指定别名为china
xstream.alias("province", Province.class);//给Province指定别名为province
xstream.alias("city", City.class);//给City类型指定别名为city
xstream.useAttributeFor(Province.class, "name");//把Province类型的name属性,生成<province>元素的属性
/*
* 去除<cities>这样的Collection类型的属性
* 去除Provice类的名为cities的List类型的属性!
*/
xstream.addImplicitCollection(Province.class, "cities");
String s = xstream.toXML(proList);
System.out.println(s);
}
/*
* 去除不想要的javabean属性
* 就是让某引起javabean属性,不生成对应的xml元素!
*/
@Test
public void fun5() {
List<Province> proList = getProinvceList();
XStream xstream = new XStream();
xstream.alias("china", List.class);//给List类型指定别名为china
xstream.alias("province", Province.class);//给Province指定别名为province
xstream.alias("city", City.class);//给City类型指定别名为city
xstream.useAttributeFor(Province.class, "name");//把Province类型的name属性,生成<province>元素的属性
xstream.addImplicitCollection(Province.class, "cities");//去除Provice类的名为cities的List类型的属性!
/*
* 让City类的,名为description属性不生成对应的xml元素
*/
xstream.omitField(City.class, "description");
String s = xstream.toXML(proList);
System.out.println(s);
}
}
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;
}
@Override
public String toString() {
return "City [name=" + name + ", description=" + description + "]";
}
public City() {
super();
// TODO Auto-generated constructor stub
}
public City(String name, String description) {
super();
this.name = name;
this.description = description;
}
}
City
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 void addCity(City city) {
cities.add(city);
}
}
Province
fun1输出结果:
<list>
<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>
</list>
fun1
fun2输出结果:
<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>
fun2
fun3输出结果:
<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>
fun3
fun4输出结果:
<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>
fun4
fun5输出结果:
<china>
<province name="北京">
<city>
<name>东城区</name>
</city>
<city>
<name>昌平区</name>
</city>
</province>
<province name="辽宁">
<city>
<name>沈阳</name>
</city>
<city>
<name>葫芦岛</name>
</city>
</province>
</china>
fun5
XStream-----把JavaBean转换为xml的工具的更多相关文章
- JavaBean转换为XML的源码
package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment; import ...
- XStream实现javabean和xml、json转化
xStream转换XML.Json数据 xStream可以轻易的将javaBean对象和xml相互转换,修改某个特定的属性和节点名称,而且也支持json的转换. maven依赖: 1 <depe ...
- javabean 和 xml 互转
1.场景描述 将javabean对象转换为xml字符串,将xml字符串转换为javabean对象. 2.maven依赖 <dependency> <groupId>jdom&l ...
- JavaBean转xml
JavaBean转xml的工具就是:XStream XStream的作用: XStream可以把JavaBean对象转换成XML!通常服务器向客户端响应的数据都是来自数据库的一组对象,当我们不能直接把 ...
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- json、javaBean、xml互转的几种工具介绍 (转载)
工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...
- JavaBean与XML转换——XStream使用笔记
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html 一:View层与Control层的数据交互 做过Web项目的人都知道,当对一个requ ...
- 微信开发,对象转换为xml时候引用XStream这个类报错处理方案
报错的信息为:The type org.xmlpull.v1.XmlPullParser cannot be resolved. /** * 扩展XStream 支持CDATA */ privat ...
- 根据javabean转换为mysql建表语句与mapper内容
原文地址: https://www.cnblogs.com/Jeffscnblog/p/10072483.html 一般上,我们会使用数据库表转换为javabean.dao.或是mapper,就叫逆 ...
随机推荐
- Androidmanifest之manifest标签详细介绍
http://www.haogongju.net/art/2094337 文档下载
- ffmpeg-20160628-git-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- 省市县联动dropdownlist
下面就是在提交按钮的单击事件中填写代码(代码区)(前提是把省市县的数据库建好) protected void Page_Load(object sender, EventArgs e) ...
- cmd导入oracle数据
ctrl+r 输入imp
- LayoutInflater的inflate函数用法详解
LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(Layo ...
- Windows update 失败的解决方案
由于刚刚装了新的系统,结果在电脑用了刚刚一周之后,我打开了自动更新,结果电脑就一直处于更新状态中.期初我以为是更新比较慢,等等可能就结束了,结果等了足足一晚上,到了第二天,电脑显示是:配置更新失败,正 ...
- 【python】SQLAlchemy
来源:廖雪峰 对比:[python]在python中调用mysql 注意连接数据库方式和数据操作方式! 今天发现了个处理数据库的好东西:SQLAlchemy 一般python处理mysql之类的数据库 ...
- Android利用Gson解析嵌套多层的Json
参考:http://www.cnblogs.com/jxgxy/p/3677256.html 比如我们要解析一个下面这种的Json: String json = {"a":&quo ...
- c++ 头文件包含问题-include&class
http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明 ...
- 数据结构和算法 – 6.构建字典: DictionaryBase 类和 SortedList 类
6.1.DictionaryBase 类的基础方法和属性 大家可以把字典数据结构看成是一种计算机化的词典.要查找的词就是关键字,而词的定义就是值. DictionaryBase 类是一种用作专有字 ...