写个小例子,方便以后复习:

1 package com.demo;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.junit.Test;
7
8 import com.thoughtworks.xstream.XStream;
9
10 public class XStreamDemo {
11 public List<Province> getProvince(){
12 Province bj = new Province();
13 bj.setName("北京");
14 List<City> bjCitys = new ArrayList<City>();
15 City dcq = new City("东城区","dongchengqu");
16 City xcq = new City("西城区","xichengqu");
17 City bcq = new City("北城区","beichengqu");
18 bjCitys.add(dcq);
19 bjCitys.add(xcq);
20 bjCitys.add(bcq);
21 bj.setCitys(bjCitys);
22
23
24 Province gd = new Province();
25 bj.setName("广东");
26 List<City> gdCitys = new ArrayList<City>();
27 City gzs = new City("广州市","guangzhoushi");
28 City szs = new City("深圳市","shenzhenshi");
29 City czs = new City("潮州市","chaozhoushi");
30 gdCitys.add(gzs);
31 gdCitys.add(szs);
32 gdCitys.add(czs);
33 gd.setCitys(gdCitys);
34
35 List<Province> provinces = new ArrayList<Province>();
36 provinces.add(bj);
37 provinces.add(gd);
38 return provinces;
39 }
40 /**
41 * 用xstream把JavaBean转换成xml字符串
42 */
43 @Test
44 public void fun1(){
45 XStream xs = new XStream();
46 String s = xs.toXML(getProvince());
47 System.out.println(s);
48 }
49
50
51 /**
52 * 使用xstream的alias(String name,Class object);方法更改类的名称
53 */
54 @Test
55 public void fun2(){
56 XStream xs = new XStream();
57 xs.alias("china", List.class);
58 xs.alias("province", Province.class);
59 xs.alias("city", City.class);
60 String s = xs.toXML(getProvince());
61 System.out.println(s);
62 }
63
64 /**
65 * 把子元素变为元素属性
66 */
67 @Test
68 public void fun3(){
69 XStream xs = new XStream();
70 //更改别名
71 xs.alias("china", List.class);
72 xs.alias("province", Province.class);
73 xs.alias("city", City.class);
74 //把子元素变为元素属性
75 xs.useAttributeFor(Province.class, "name");
76
77 String s = xs.toXML(getProvince());
78 System.out.println(s);
79 }
80 /**
81 * 去除集合属性对应元素
82 */
83 @Test
84 public void fun4(){
85 XStream xs = new XStream();
86 //更改别名
87 xs.alias("china", List.class);
88 xs.alias("province", Province.class);
89 xs.alias("city", City.class);
90 //把子元素变为元素属性
91 xs.useAttributeFor(Province.class, "name");
92 // 去除集合属性对应元素
93 xs.addImplicitCollection(Province.class, "citys");
94 String s = xs.toXML(getProvince());
95 System.out.println(s);
96 }
97 /**
98 * 去除集合属性对应元素
99 */
100 @Test
101 public void fun5(){
102 XStream xs = new XStream();
103 //更改别名
104 xs.alias("china", List.class);
105 xs.alias("province", Province.class);
106 xs.alias("city", City.class);
107 //把子元素变为元素属性
108 xs.useAttributeFor(Province.class, "name");
109 // 去除集合属性对应元素
110 xs.addImplicitCollection(Province.class, "citys");
111 //让类成员不生成对应的xml元素
112 xs.omitField(City.class, "explain");
113 String s = xs.toXML(getProvince());
114 System.out.println(s);
115 }
116
117 }

----其它涉及的类-----

Provice.class

1 import java.util.List;
2
3 public class Province {
4 private String name;
5 private List<City> citys;
6 public Province() {
7 super();
8 // TODO Auto-generated constructor stub
9 }
10 public Province(String name, List<City> citys) {
11 super();
12 this.name = name;
13 this.citys = citys;
14 }
15 public String getName() {
16 return name;
17 }
18 public void setName(String name) {
19 this.name = name;
20 }
21 public List<City> getCitys() {
22 return citys;
23 }
24 public void setCitys(List<City> citys) {
25 this.citys = citys;
26 }
27
28
29 }

City.class

1 public class City {
2 private String name;
3 private String explain;
4 public City() {
5 super();
6 // TODO Auto-generated constructor stub
7 }
8 public City(String name, String explain) {
9 super();
10 this.name = name;
11 this.explain = explain;
12 }
13 public String getName() {
14 return name;
15 }
16 public void setName(String name) {
17 this.name = name;
18 }
19 public String getExplain() {
20 return explain;
21 }
22 public void setExplain(String explain) {
23 this.explain = explain;
24 }
25
26 }

XStream的例子的更多相关文章

  1. java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子

    目录 背景 测试 环境 工具 说明 结果 结论 xstream简单教程 准备 代码 protobuf简单教程 快速入门 下载.exe编译器 编写.proto文件 利用编译器编译.proto文件生成ja ...

  2. Xstream学习资料

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

  3. XStream简单入门

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

  4. (转载)XML解析之-XStream解析

    转载来源:http://hwy584624785.iteye.com/blog/1168680 本例使用XStream生成一个xml文件,再发序列化xml文件内容. XStream是一个简单的类库,可 ...

  5. XStream 快速转换xml

    项目地址:http://xstream.codehaus.org/tutorial.html (以下来源于官网) 1.Create classes to be serialized(初始化类) pub ...

  6. XStream使用详解

    1.Xstream介绍 (1)Xstream介绍     Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需 ...

  7. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  8. JAVA bean与XML互转的利器---XStream

    最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家 ...

  9. XML 处理利器 : XStream

    XStream 概述      XStream 是一套简洁易用的开发类库,用于将Java对象序列化为XML或者将XML反序列化为JAVA对象,是JAVA对象和XML之间一个双向转换器. 举例     ...

随机推荐

  1. ubuntu下搭建lamp

    一.使用apt-get方式为Ubuntu安装PHP+MYSQL+Apache   分别执行如下命令:   (1)安装MYSQL   sudo apt-get install mysql-server ...

  2. 关于STM8空间不足的解决方法

    STM8虽然功能齐全,但是空间不足也是经常出来的情况.要么.text overflow,要么.bss overflow,让人头疼.这里把一些优化方案列出来,让空间得到充分利用: 1.在Project ...

  3. [翻译]使用Swift在Xcode中创建自定义控件

    使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...

  4. 无线路由器WDS 桥接设置方法

    假设现在有a b c三台路由器,现在我们把b作为中心路由器,基本的配置之后使其能正常无线上网. 然后: 无线路由器A设置: 1.修改LAN口IP地址.在网络参数-LAN口设置中,修改IP地址和B路由器 ...

  5. hdinfo

    --------[ 鲁大师 ]-------------------------------------------------------------------------------- 版本: ...

  6. Android版Ftp服务端软件

    分享一款开发的Android版Ftp服务端软件,支持Android4.0及以上版本,可以实现局域网无线传输文件到手机,或者把手机上的多媒体文件分享到iPad等设备来扩展这些设备的存储空间,详情请见软件 ...

  7. EditorWindow中手动控制焦点

    在Unity3D中制作编辑器的时候,有时候会需要手动控制界面上控件的焦点,与此相关的有三个函数都在下面的示例代码中了: public void Test() { // 给控件命名 GUI.SetNex ...

  8. 后端码农谈前端(CSS篇)第一课:CSS概述

    一.从扮演浏览器开始 扮演浏览器是Head First图书中很有意义的一个环节.可作者忘记了告诉我们扮演浏览器的台本.我们从这里开始. 上图是webkit内核渲染html和css的流程图.从该图我们可 ...

  9. 关于JavaScript中apply与call的用法意义及区别

    JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. cal ...

  10. 从IE6到IE11上运行WebGL 3D遇到的各种坑

    这篇<基于HTML5的电信网管3D机房监控应用>基于WebGL技术的应用让少同学对HTML5 3D的应用产生了兴趣和信心,但有不少网友私信询问WebGL如何运行在老的IE678910浏览器 ...