Xstream使用的相关细节(javaBean转换成xml文档)
2017-08-14 13:29
471 查看
1. 导入jar包
jar包:xstream-1.4.7.jar与依赖包xpp3_min-1.1.4c.jar.。2. 创建javaBean(示例)
//城市类 package cn.yellowimg.demo1; public class City { private String name;//市名 private String description; @Override public String toString() { return "City [name=" + name + ", 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; } public City() { super(); // TODO Auto-generated constructor stub } public City(String name, String description) { super(); this.name = name; this.description = description; } }
//省类 package cn.yellowimg.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; } //创建该方法的原因是方便往cities添加City对象 public void addCity(City city) { cities.add(city); } }
3.创建一个国家集合(List<Province>
)
public class Demo1 { public List<Province> getProvinceList() { List<Province> provinceList = new ArrayList<Province>(); Province p1 = new Province(); p1.setName("北京"); p1.addCity(new City("海淀区","haidian")); p1.addCity(new City("朝阳区","chaoyang")); provinceList.add(p1); return provinceList; }
4. 测试类
@Test public void fun1() { List<Province> provinceList = getProvinceList(); /** * 创建Xstream对象 * 调用toXMl把集合转换成xml字符串 */ XStream xStream = new XStream(); String xml = xStream.toXML(provinceList); System.out.println(xml); }
5.运行结果
<list>------->对应provinceList对象 <cn.yellowimg.demo1.Province>------->对应Province对象 <name>北京</name>------->对应Province对象的属性name <cities>------->对应Province对象的属性cities <cn.yellowimg.demo1.City>------->对应City对象 <name>海淀区</name>------->对应City对象的属性name <description>haidian</description>------->对应City对象的属性description </cn.yellowimg.demo1.City> <cn.yellowimg.demo1.City> <name>朝阳区</name> <description>chaoyang</description> </cn.yellowimg.demo1.City> </cities> </cn.yellowimg.demo1.Province> </list>
6.改进需求
将list改为chinacn.yellowimg.demo1.Province修改为province
cn.yellowimg.demo1.City修改为city。
@Test public void fun2() { List<Province> provinceList = getProvinceList(); /** * 创建Xstream对象 * 调用toXMl把集合转换成xml字符串 */ XStream xStream = new XStream(); /** * xStream.alias(String name,Class type)为一个对象类型起别名 * name为修改之后的别名,type为对象类型 */ xStream.alias("china",List.class); xStream.alias("province",Province.class); xStream.alias("city",City.class); String xml = xStream.toXML(provinceList); System.out.println(xml); }
结果:
<china> <province> <name>北京</name> <cities> <city> <name>海淀区</name> <description>haidian</description> </city> <city> <name>朝阳区</name> <description>chaoyang</description> </city> </cities> </province> </china>
将province下的name元素变为province的属性
@Test public void fun3() { List<Province> provinceList = getProvinceList(); /** * 创建Xstream对象 * 调用toXMl把集合转换成xml字符串 */ XStream xStream = new XStream(); /** * xStream.alias(String name,Class type)为一个对象类型起别名 * name为修改之后的别名,type为对象类型 */ xStream.alias("china",List.class); xStream.alias("province",Province.class); xStream.alias("city",City.class); /** * xStream.useAttributeFor(Class type,String field); * useAttributeFor()的意思是将某个对象类型的字段变为属性 */ xStream.useAttributeFor(Province.class,"name"); String xml = xStream.toXML(provinceList); System.out.println(xml); }
<china> <province name="北京"> <cities> <city> <name>海淀区</name> <description>haidian</description> </city> <city> <name>朝阳区</name> <description>chaoyang</description> </city> </cities> </province> </china>
去除无用的集合属性
<cities>元素
@Test public void fun4() { List<Province> provinceList = getProvinceList(); /** * 创建Xstream对象 * 调用toXMl把集合转换成xml字符串 */ 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(Class type,String field); * 去除无用的集合属性,直接显示list类型里的元素。 * 我们需要Collection的内容,而不希望Collection本身也成为一个元素 / xStream.addImplicitCollection(Province.class, "cities"); String xml = xStream.toXML(provinceList); System.out.println(xml); }
<china> <province name="北京"> <city> <name>海淀区</name> <description>haidian</description> </city> <city> <name>朝阳区</name> <description>chaoyang</description> </city> </province> </china>
删除
<description>元素
@Test public void fun5() { List<Province> provinceList = getProvinceList(); /** * 创建Xstream对象 * 调用toXMl把集合转换成xml字符串 */ 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"); /** * xStream.omitField(Class type, String field); * 忽略对象中的某个属性。 */ xStream.omitField(City.class, "description"); String xml = xStream.toXML(provinceList); System.out.println(xml); }
<china> <province name="北京"> <city> <name>海淀区</name> </city> <city> <name>朝阳区</name> </city> </province> </china>
大功告成!!!!
相关文章推荐
- 使用xStream框架从JavaBean对象转换成XML文档转换成Java对象
- 使用XStream插件实现JavaBean转换XML
- 使用XStream实现xml与JavaBean之间的转换
- 使用 XStream实现JavaBean 与 XML/JSON 之间相互转换
- JavaBean与XML转换——XStream使用笔记
- android 中XML和对象转换利器Xstream的使用
- XSLT语法 在.net中使用XSLT转换xml文档示例
- 使用XStream进行POJO和xml之间的转换
- android 中XML和对象转换利器Xstream的使用
- android 中XML和对象转换利器Xstream的使用
- JAXB 初识(由XML转换为JavaBean) Unmarshaller 的使用
- 使用OPENXML函数将XML文档转换为行结果集
- java 使用XStream Java对象和XML之间的转换
- XStream实现javabean与xml之间相互转换
- 使用JAXB处理JavaBean和XML的转换
- 使用XStream, 对于java object与xml之间的转换
- C#中使用XSLT文件将XML文档转换为HTML
- 使用OPENXML函数将XML文档转换为行结果集
- xstream:实现JavaBean与XML/JSON的相互转换
- 使用javascript在客户端通过 XSLT 将 XML 文档转换为 XHTML,兼容IE和Firefox