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的更多相关文章

  1. 使用XStream是实现XML与Java对象的转换(1)--简介及入门示例

    一.简单介绍 XStream是thoughtworks开发的开源框架,用于实现XML数据于Java对象.Json数据的转换.它不需要schema或其他的mapping文件就可以进行java对象和xml ...

  2. XStream使用笔记

    XStream是一个可以将JavaBean生成XML的工具,很方便的帮助我们在后台服务器将数据序列化为XML,接下来就可以将XML数据响应给前台进行数据交互 XStream需要的jar包 * 核心JA ...

  3. XStream简单入门

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

  4. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

  5. XStream简单使用01——xml和Ojbect互转

    package org.zhb.test; /** * author : zhb * data : 2014-2-14 * use packages: * xmlpull-1.1.3.1.jar * ...

  6. XStream的使用方法、简单使用方法、xml的解析方法

    下面介绍的是在Android Studio中的使用 Android Studio中目前支持的Xstream最高版本是xstream-1.4.7.jar,大家可以在网上下载,我的是在开源中国项目中有这个 ...

  7. XStream的简单使用

    XStream XStream是一个java对象和xml相互转换的工具 创建XStream对象:XStream stream = new XStream() Java对象转换成xml:stream . ...

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

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

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

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

随机推荐

  1. bootstrap input 加了 disabled 后台竟然接受不到值

    下午做了一个input  值需要不可改变.在input属性中加入了  disabled .在后台接受  var_dump($_POST); 竟然看不到值. <input type="t ...

  2. php 模拟get和post提交方法[解决ajax跨域问题]

    get: $url = "http://www.111cn.net /index.php?a=b&c=d&e=f&g=" . urlencode('王璐个人 ...

  3. COM组件多接口对象模型

    COM组件有两种接口类型,Dual and Custom,如下图所示.本文说的是Custom.所谓多接口COM对象是指此COM对象实现了多于一个的自定义接口,即Custom接口. 接口图如下: 需要注 ...

  4. usermod命令

    usermod 功能: 修改用户 常用参数:-c    账号说明-d    账号家目录-e    密码失效日期-g    主用户组GID-G    次用户组GID-l    账号名称-s    she ...

  5. 由浅到深理解ROS(1)

    ROS机器人操作系统 ( Robot Operating System 或简称 ROS),可以帮助提高机器人软件的开发效率.ROS能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能 ...

  6. hdu 5285 wyh2000 and pupil(二染色)

    第一次用vector解得题.值得纪念,这道题是二染色问题,我用bfs解得.就是染色,推断,计数问题,其 实挺简单的,就是得判一下特殊情况,当n<2的时候就不能有解,由于题目要求每一个组至少有一个 ...

  7. EventBus的使用详解,功能为在Fragment,Activity,Service,线程之间传递消息

    最近跟同事用到了EventBus的使用,之前不太了解EventBus,查阅资料发现EventBus还挺好用的,用法比较简单,下面就把我看到的关于EventBus的博客分享给大家,里面介绍了很多的使用详 ...

  8. 记录-配置tomcat不加项目名即可访问项目

    环境:tomcat 在eclipse中  打开Servers  下的server.xml文件,在最下方你会看到类似 <Context docBase="/vankeplatform&q ...

  9. 【python】-- 类的继承(新式类/经典类)、多态

    继承 之前我们说到了类的公有属性和类的私有属性,其实就是类的封装,现在准备随笔的 是继承,是面向对象的第二大特性. 面向对象编程 (OOP) 语言的一个主要功能就是“继承”.继承是指这样一种能力:它可 ...

  10. Symfony 如何使用ckeditor

    首先: 1)加载以下两个bundle "egeloen/ckeditor-bundle": "^4.0","helios-ag/fm-elfinder ...