一:功能

  可以将JavaBean转换(序列化)成XMl

二:依赖jar包

  xstream.jar

  xpp3_min.jar(xml pull parser)xml解析器

三:使用步骤

  XStream xstream = new XStream();

  String xmlStream = xstream.toXML(JavaBean);

四:使用细节

  别名:把对应的元素名改了,因为生成的元素名会包含整个JavaBean的全路径

//        指定别名
xStream.alias("china",List.class);
xStream.alias("province",Province.class);
xStream.alias("city",City.class);

  使用为属性,默认类的成员,生成的是子元素,我们希望将它改为属性,如name

//        把Province类型的name属性,生成<province>元素的属性
xStream.useAttributeFor(Province.class,"name");

  去除collection类型的成员名,只是需要collection的内容,不希望collection本身再生成一个子节点去包含它的内容

        xStream.addImplicitCollection(Province.class,"citys");

  去除类的指定的成员名,JavaBean可能包含我们不需要在XML中使用的属性,所以需要去除多有的成员

  xStream.omitField(City.class,"description");

五:源码

JavaBean

package xstream;

/**
* Created by YuWenHui on 2017/4/24 0024.
*/
public class City {
private String name;
private String description; public City(String name, String description) {
this.name = name;
this.description = description;
} public City() {
super();
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
package xstream;

import java.util.ArrayList;
import java.util.List; /**
* Created by YuWenHui on 2017/4/24 0024.
*/
public class Province {
private String name;
List<City> citys = new ArrayList<City>(); public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<City> getCitys() {
return citys;
} public void setCitys(List<City> citys) {
this.citys = citys;
} public void addCity(City city){
citys.add(city);
}
}

dome

package xstream;

import com.thoughtworks.xstream.XStream;

import java.util.ArrayList;
import java.util.List; /**
* Created by YuWenHui on 2017/4/24 0024.
*/
public class Dome {
// 返回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("上饶", "ShangRao"));
p2.addCity(new City("宜春", "YiChun")); List<Province> provinceList = new ArrayList<Province>();
provinceList.add(p1);
provinceList.add(p2); return provinceList;
}
@org.junit.Test
public void test(){
List<Province> provinceList = getProinvceList();
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");
// 去除collection类型的成员名,只是需要collection的内容,不希望collection本身再生成一个子节点去包含它的内容
xStream.addImplicitCollection(Province.class,"citys");
// 去除类的指定的成员名,JavaBean可能包含我们不需要在XML中使用的属性,所以需要去除多有的成员
xStream.omitField(City.class,"description");
String s = xStream.toXML(provinceList);
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>

XStream的使用的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. XStream xml 解析框架使用笔记

    1. xml的标签可以映射为类.类成员变量 2. 有子标签的标签映射为类,没有子标签的便签映射为类成员变量 3. 类名.类成员变量名如与标签名不一致需要通过注解或代码设置别名 // 类名 @XStre ...

  3. Xstream学习资料

    java中有关xml操作的,我们项目中首推Xstream.至于原因不说了.跟着大众的脚步走应该没错的.有关Xstream的文档如下. 官方文档 XStream完美转换XML.JSON XStream实 ...

  4. XStream简单入门

    简单的讲,XStream 涉及的就五个知识点:详情参考 官网 混叠,注解,转换器,对象流和操作json! 下面就用几个简单的例子来实现上述五个知识点! 基本步骤: 第1步:创建XStream对象. 通 ...

  5. 使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

    使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

  6. Xstream解析XML

    <oschina> <catalog>1</catalog> <newsCount>0</newsCount> <pagesize&g ...

  7. 打造完美的xml技术解决方案(dom4j/xstream)

    转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...

  8. XStream学习笔记

    XStream 所需jar包: xstream-1.3.jar xpp3_min-1.1.4c.jar xmlpull-1.1.3.1.jar 目录: 1.注解去除,标签中带有包名的节点 2.注解修改 ...

  9. Java对象表示方式2:XStream实现对对象的XML化

    上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 ...

  10. XStream、JAXB 日期(Date)、数字(Number)格式化输出xml

    XStream.Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date).数字按指定格式输出的需求,下面是使用示例: 一.日期字段格 ...

随机推荐

  1. 面向对象的全套“企业微信”api接口的代码实现,网上太多“面向过程”微信api接口的代码,这个开源给需要的人用

    有段时间没有写文章了. 一直以来,微信的热门是看得到的,很多人都需要与微信的api对接. 今天我这里就分享全套的企业微信api接口的代码. 关于微信api,网上已经有很多实现的了. 但是我今天之所以还 ...

  2. Visual Studio 2015/2017 与ASP.NET CORE 联合创建具有SPA模式的Angular2模板

    虽然注册博客园很久,但是一直没有什么可写的,真心感觉好尴尬了,这次终于找到了一点可以写,有点小兴奋和小害羞呢. 进入主题,前端SPA模式越来越受到欢迎,Core 也开始被很多企业提上日程,但是因为这个 ...

  3. Octave Tutorial(《Machine Learning》)之第一课《数据表示和存储》

    Octave Tutorial 第一课 Computation&Operation 数据表示和存储 1.简单的四则运算,布尔运算,赋值运算(a && b,a || b,xor( ...

  4. Bootsrap 的 Carousel

    一.简介 Carousel 就是指轮播图,这里 有完整的代码例子.它可以很简单的就构造出来,结构如下: div.carousel.slide[data-ride="carousel" ...

  5. 老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

    前面两篇(简单运维1.简单运维2)介绍了一些Windows Server Docker相关的基本运维知识.今天这一篇,Windows Server Dockerfile葵花宝典,涵盖了许多典型场景的W ...

  6. 模拟jquery链式访问

    一直写代码写代码,博客都快荒废了,眼看一月要过完,不能不留下点记忆,嘿嘿,刚研究了下jquery的链式访问,这么好用的技能我赶紧get了下,研究后略微修改,模拟一个简单的链式访问,下面这段代码支持修改 ...

  7. SVN使用小记

    SVN(Subversion)是优秀的版本控制工具,之前在eclipse里面项目管理的时候,File-->Import-->SVN-->从SVN检出项目-->创建新的资源库位置 ...

  8. scrollWidth,offsetWidth,clientWidth,width;scrollHeight,offsetHeight,clientHeight,height;offsetTop,scrollTop,top;offsetLeft,scrollLeft,left还有谁

    题中的那么多属性让人头都大了,他们到底是什么意思?不同浏览器的实现是一样的吗?以下所有结论来自chrome版本 53.0.2785.89 (64-bit)和firefox版本52.0.2,操作系统ub ...

  9. gcc编译参数之m32 m64

    m32指定编译为32位应用程序: make CFLAGS=-m32 m64指定编译为64位应用程序: make CFLAGS=-m64

  10. MYSQL数据库导入大数据量sql文件失败的解决方案

    1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...