XStream(可把JavaBean转换成XML的小工具)
XStream
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.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的对应的元素!
代码示例:
Province:
package com.xjs.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 void addCity(City city) { cities.add(city); } }
City:
package com.xjs.demo1; public class City { private String name;// 市名 private String description;// 描述 public City() { } public City(String name, String description) { super(); this.name = name; this.description = 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 + "]"; } }
Demo1:
package com.xjs.demo1; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.thoughtworks.xstream.XStream; /** * 演示 * @author hp * */ public class Demo1 { //返回JavaBean集合 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; } @Test public void fun1(){ List<Province> proList=getProvinceList(); /* * 创建XStream对象 * 调用toXML把集合转换成xml字符串 */ XStream xs=new XStream(); String xml = xs.toXML(proList); System.out.println(xml); } /* * 别名 * 希望: * >默认List类型对应<List>元素,希望让List类型对应<china>元素 * >默认Province类型对应<com.xjs.demo1.Province>,希望它对应<province> * >默认City类型对应<com.xjs.demo1.City>,希望对应<city> */ @Test public void fun2(){ List<Province> proList=getProvinceList(); XStream xs=new XStream(); /* * 给指定的类型指定别名 */ xs.alias("china", List.class);// xs.alias("province", Province.class); xs.alias("city", City.class); String xml = xs.toXML(proList); System.out.println(xml); } /* * 默认JavaBean的属性都会生成子元素,而现在希望生成元素的属性 */ @Test public void fun3(){ List<Province> proList=getProvinceList(); XStream xs=new XStream(); xs.alias("china", List.class);//List类型指定别名为china xs.alias("province", Province.class); xs.alias("city", City.class); /* * 把Province类型的name属性,生成<province>元素的属性 */ xs.useAttributeFor(Province.class, "name"); String xml = xs.toXML(proList); System.out.println(xml); } /* * 去除List类型的属性,只把List中的元素生成XML */ @Test public void fun4(){ List<Province> proList=getProvinceList(); XStream xs=new XStream(); xs.alias("china", List.class);//List类型指定别名为china xs.alias("province", Province.class); xs.alias("city", City.class); /* * 把Province类型的name属性,生成<province>元素的属性 */ xs.useAttributeFor(Province.class, "name"); /* * 去除<cities>这样Collection类型的属性 * 去除Province类的名为cities的List类型的属性 */ xs.addImplicitCollection(Province.class, "cities"); String xml = xs.toXML(proList); System.out.println(xml); } /* * 去除某个JavaBean中的属性 */ @Test public void fun5(){ List<Province> proList=getProvinceList(); XStream xs=new XStream(); xs.alias("china", List.class);//List类型指定别名为china xs.alias("province", Province.class); xs.alias("city", City.class); xs.useAttributeFor(Province.class, "name"); xs.addImplicitCollection(Province.class, "cities"); /* * 让City类的description属性不生成对应 的xml元素 */ xs.omitField(City.class, "description"); String xml = xs.toXML(proList); System.out.println(xml); } }
原文地址:https://www.cnblogs.com/xjs1874704478/p/11009801.html
- WordPress 设置与调用 Cookie 的相关代码
- MSBuild入门
- HTTP Basic Authentication验证WCF Data Service
- 移除WordPress 仪表盘首页的“插件”“其它WordPress 新闻”小工具
- 解决VMware 7在Windows 7上无法上网的问题
- Windows Server 2008群集仲裁机制
- [C#2] 5-迭代器
- 服务器未能识别 HTTP 标头 SOAPAction 的值
- 实用代码-C#获取本机网络适配器信息及MAC地址
- WordPress 自定义 login (登录页面)CSS 样式
- [C#1] 12-特性
- HTTP Basic Authentication for RESTFul Service
- [C#2] 4-可空类型、静态类
- jquery 操作css 尺寸
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- CentOS7基于ss5搭建Socks5代理服务器
- Go热门开源项目大全
- Python钉钉报警及Zabbix集成钉钉报警
- 无锁队列的实现
- Go 单元测试和性能测试
- 01 . etcd简介原理,应用场景及部署,简单使用
- GO 单例模式
- 关于本博客皮肤样式配置
- 03 . Go开发一个日志平台之Elasticsearch使用及kafka消费消息发送到Elasticsearch
- GO 匿名函数和闭包
- Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183)和HTTP服务器的缺省banner漏洞
- GO中间件(Middleware )
- TomcatAJP文件包含漏洞及线上修复漏洞
- golang new和make的区别
- Magicodes.IE之导入导出筛选器