XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
city
package xstream; 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) {
this.name = name;
this.description = description;
}
}
province
package xstream; import java.util.ArrayList;
import java.util.List; public class Province {
private String name;
private List<City> cities = new ArrayList<City>(); public void addCity(City city){
cities.add(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() {} public Province(String name) {
this.name = name;
}
}
测试类
package xstream; import java.util.ArrayList;
import java.util.List; import org.junit.Test; import com.thoughtworks.xstream.XStream; public class TestXStream {
public List<Province> getProvinceList(){
List<Province> provinceList = new ArrayList<Province>(); Province p1 = new Province("北京");
p1.addCity(new City("东城区","东城区"));
p1.addCity(new City("西城区","西城区")); Province p2 = new Province("上海");
p2.addCity(new City("徐汇区","徐汇区"));
p2.addCity(new City("浦东新区","浦东新区")); provinceList.add(p1);
provinceList.add(p2); return provinceList;
}
//--->原生版
@Test
public void fun(){
List<Province> proList = getProvinceList();
XStream xStream = new XStream();
String xml = xStream.toXML(proList);
System.out.println(xml);
} //--->修改
@Test
public void fun1(){
List<Province> proList = getProvinceList();
XStream xStream = new XStream(); //别名
xStream.alias("china", java.util.List.class);
xStream.alias("province", Province.class);
xStream.alias("city", City.class); //把子元素变成父元素的属性
xStream.useAttributeFor(Province.class, "name"); //去掉容器,"剥皮"
xStream.addImplicitCollection(Province.class, "cities"); //忽略不需要的属性-xml的元素
xStream.omitField(City.class, "description"); String xml = xStream.toXML(proList);
System.out.println(xml);
} }
子元素转换成属性
去掉集合元素("剥皮")
忽略不需要的元素
XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素的更多相关文章
- Struts(二十一):类型转换与复杂属性、集合属性配合使用
背景: 本章节主要以复杂属性.集合属性类型转化为例,来学习这两种情况下怎么使用. 复杂对象属性转换场景: 1.新建struts_04 web.xml <?xml version="1. ...
- 使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法
Student类有集合属性Courses,如何把Student连同集合属性Courses传递给控制器方法? public class Student { public ...
- Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射
1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...
- (转)Hibernate框架基础——映射集合属性
http://blog.csdn.net/yerenyuan_pku/article/details/52745486 集合映射 集合属性大致有两种: 单纯的集合属性,如像List.Set或数组等集合 ...
- 编写高质量代码改善C#程序的157个建议——建议25:谨慎集合属性的可写操作
建议25:谨慎集合属性的可写操作 如果类型的属性中有集合属性,那么应该保证属性对象是由类型本身产生的.如果将属性设置为可写,则会增加抛出异常的几率.一般情况下,如果集合属性没有值,则它返回的Count ...
- {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index
03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...
- MongoDB学习笔记~对集合属性的操作
回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...
- MongoDB学习笔记~数据模型属性为集合时应该为它初始化
回到目录 今天要说一下技术点,我们在设计mongodb的数据模型时,如果属性是数组或者集合类型,我们在模型初始化时,需要为它们初始化一下,否则在数据库里将会被存储为NULL,当被存储为NULL时,我们 ...
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- 【转载】Linux 系统时间查看 及 时区修改(自动同步时间)
1:使用date命令查看时区 [root@db-server ~]# date -R Sun, 11 Jan 2015 07:10:28 -0800 [root@db-server ~]# ...
- Python Unicode 转换 字符串
estimate_price = "\u00a340\u00a0\u00a0-\u00a060" sold_price = "Sold for \u00a345" ...
- Atitit.基于时间戳的农历日历历法日期计算
Atitit.基于时间戳的农历日历历法日期计算 1. 农历xx年的大小月份根据万年历查询1 2. 农历xx年1月1日的时间戳获取1 3. 计算当年的时间戳与农历日期的对应表,时间戳为key,日期为va ...
- Atitit.软件仪表盘(2)--vm子系统--资源占用监测
Atitit.软件仪表盘(2)--vm子系统--资源占用监测 1. Jvisualvm.exe 2. jprofile 3. Heap //permgen monitor 作者::老哇的爪子At ...
- 【Android】12.6 利用Intent实现记事本功能(NotePad)
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 这个例子演示如何实现一个简单的记事本功能. 该例子提前使用了后面章节将要介绍的SQLLite数据库. 二.示例-c ...
- CCCallFunc CCCallFuncN CCCallFuncND的区别和使用
CCCallFunc CCCallFuncN CCCallFuncND都用来创建带有回调函数的动作,区别主要在于回调函数是否带有参数 CCCallFunc是执行对应的回调函数,其中回调函数不可带参数. ...
- vue项目中,main.js,App.vue,index.html如何调用
1.main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件 2.App.vue是我们的主组件,所有页面都是在App.vue下进行切换的.其实你也可以理解为所有的路由也是App. ...
- [转] C#与Java的比较
[转] C#与Java的比较 转自:C#与Java的比较 2015-06-26 目录 一.C#.C++和Java二.语言规范的比较 2.1.简单数据类型 2.2.常量 2.3.公用类的入口点 ...
- 自定义流水号的autocode
; } }; ); dac.executeUpdate(); , TimeUnit.); ); ); } ); }}
- python模块之codecs: 自然语言编码转换
python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理. 有一点需要清楚的是,当python要做编码转换的时候,会借助于内部 ...