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. 05 linux下编译Memcached

    一: linux下编译Memcached(1)先在linux上安装gcc,cmake,autoconf,libtool工具,以后会使用到. 安装命令为:yum install gcc make aut ...

  2. PMD:Java源代码扫描器

    PMD是一个开源代码分析器.可以查找常见编程缺陷,比如未使用的变量.空catch代码块.不必要的对象创建等.支持Java.JavaScript.PLSQL.Apache Velocity.XML.XS ...

  3. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps Office新的App模型

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps  Office新的App模型         Office 2 ...

  4. ajax 和jsonp 不是一码事 细读详解

    由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...

  5. 手机touch事件

    touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结束的时候触发 而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点( ...

  6. Protobuf 语法 - 史上最简教程

    Protobuf 语法简明教程 疯狂创客圈 死磕Netty 亿级流量架构系列之12 [博客园 总入口 ] 在protobuf中,协议是由一系列的消息组成的.因此最重要的就是定义通信时使用到的消息格式. ...

  7. Linux显示网络相关信息

    netstat -tlun    查看本机监听的端口 netstat -an      查看本机所有的网络连接 netstat -rn      查看本机路由表 -t TCP协议 -u UDP协议 - ...

  8. python+NLTK 自然语言学习处理五:词典资源

    前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中 ...

  9. ThoughtWorks(中国) 程序员读书雷达

    ThoughtWorks(中国)程序员读书雷达 软件业的特点是变化.若要提高软件开发的技能,就必须跟上技术发展的步伐.埋首醉心于项目开发与实战,固然能够锤炼自己的开发技巧,却难免受限于经验与学识.世界 ...

  10. php......调研投票练习

    调研题目与调研选项显示页面<style type="text/css"> #list{ width:400px; height:200px;} #jieguo{ wid ...