XStream-----把JavaBean转换为xml的工具
2016-11-21 00:36
344 查看
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>元素的name属性
去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素
xstream.addImplicitCollection(Province.class, "cities"):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
去除类的指定成名,让其不生成xml元素
xstream.omitField(City.class, "description"):在生成的xml中不会出现City类的名为description的对应的元素!
应用实例:
fun5
可以把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>元素的name属性
去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素
xstream.addImplicitCollection(Province.class, "cities"):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
去除类的指定成名,让其不生成xml元素
xstream.omitField(City.class, "description"):在生成的xml中不会出现City类的名为description的对应的元素!
应用实例:
1 import java.util.ArrayList; 2 import java.util.List; 3 import org.junit.Test; 4 import com.thoughtworks.xstream.XStream; 5 /** 6 * 演示XStream 7 */ 8 public class Demo1 { 9 // 返回javabean集合 10 public List<Province> getProinvceList() { 11 Province p1 = new Province(); 12 p1.setName("北京"); 13 p1.addCity(new City("东城区", "DongChengQu")); 14 p1.addCity(new City("昌平区", "ChangPingQu")); 15 Province p2 = new Province(); 16 p2.setName("辽宁"); 17 p2.addCity(new City("沈阳", "shenYang")); 18 p2.addCity(new City("葫芦岛", "huLuDao")); 19 List<Province> provinceList = new ArrayList<Province>(); 20 provinceList.add(p1); 21 provinceList.add(p2); 22 return provinceList; 23 } 24 @Test 25 public void fun1() { 26 List<Province> proList = getProinvceList(); 27 /* 28 * 创建XStream对象 29 * 调用toXML把集合转换成xml字符串 30 */ 31 XStream xstream = new XStream(); 32 String s = xstream.toXML(proList); 33 System.out.println(s); 34 } 35 /* 36 * 别名(alias) 37 * 希望: 38 * * 默认List类型对应<list>元素,希望让List类型对应<china>元素 39 * * 默认Province类型对应<cn.itcast.demo1.Province>,希望让它对应<province> 40 * * 默认City类型对应<cn.itcast.demo1.City>,希望它对应<city>元素 41 */ 42 @Test 43 public void fun2() { 44 List<Province> proList = getProinvceList(); 45 XStream xstream = new XStream(); 46 /* 47 * 给指定的类型指定别名 48 */ 49 xstream.alias("china", List.class);//给List类型指定别名为china 50 xstream.alias("province", Province.class);//给Province指定别名为province 51 xstream.alias("city", City.class);//给City类型指定别名为city 52 String s = xstream.toXML(proList); 53 System.out.println(s); 54 } 55 /* 56 * 默认javabean的属性都会生成子元素,而现在希望生成元素的属性 57 */ 58 @Test 59 public void fun3() { 60 List<Province> proList = getProinvceList(); 61 XStream xstream = new XStream(); 62 xstream.alias("china", List.class);//给List类型指定别名为china 63 xstream.alias("province", Province.class);//给Province指定别名为province 64 xstream.alias("city", City.class);//给City类型指定别名为city 65 /* 66 * 把Province类型的name属性,生成<province>元素的属性 67 */ 68 xstream.useAttributeFor(Province.class, "name"); 69 String s = xstream.toXML(proList); 70 System.out.println(s); 71 } 72 /* 73 * 去除List类型的属性,只把list中的元素生成xml元素 74 */ 75 @Test 76 public void fun4() { 77 List<Province> proList = getProinvceList(); 78 XStream xstream = new XStream(); 79 xstream.alias("china", List.class);//给List类型指定别名为china 80 xstream.alias("province", Province.class);//给Province指定别名为province 81 xstream.alias("city", City.class);//给City类型指定别名为city 82 xstream.useAttributeFor(Province.class, "name");//把Province类型的name属性,生成<province>元素的属性 83 /* 84 * 去除<cities>这样的Collection类型的属性 85 * 去除Provice类的名为cities的List类型的属性! 86 */ 87 xstream.addImplicitCollection(Province.class, "cities"); 88 String s = xstream.toXML(proList); 89 System.out.println(s); 90 } 91 /* 92 * 去除不想要的javabean属性 93 * 就是让某引起javabean属性,不生成对应的xml元素! 94 */ 95 @Test 96 public void fun5() { 97 List<Province> proList = getProinvceList(); 98 XStream xstream = new XStream(); 99 xstream.alias("china", List.class);//给List类型指定别名为china 100 xstream.alias("province", Province.class);//给Province指定别名为province 101 xstream.alias("city", City.class);//给City类型指定别名为city 102 xstream.useAttributeFor(Province.class, "name");//把Province类型的name属性,生成<province>元素的属性 103 xstream.addImplicitCollection(Province.class, "cities");//去除Provice类的名为cities的List类型的属性! 104 /* 105 * 让City类的,名为description属性不生成对应的xml元素 106 */ 107 xstream.omitField(City.class, "description"); 108 String s = xstream.toXML(proList); 109 System.out.println(s); 110 } 111 }
1 <china> 2 <province name="北京"> 3 <city> 4 <name>东城区</name> 5 </city> 6 <city> 7 <name>昌平区</name> 8 </city> 9 </province> 10 <province name="辽宁"> 11 <city> 12 <name>沈阳</name> 13 </city> 14 <city> 15 <name>葫芦岛</name> 16 </city> 17 </province> 18 </china>
fun5
相关文章推荐
- javabean转换成xml(XStream)小工具
- XML与JavaBean相互转换工具
- XStream实现javabean与xml之间相互转换
- XStream把xml转换为多个对象组合的JavaBean例子
- xStream之xml json javabean map的转换
- 使用XStream插件实现JavaBean转换XML
- XStream在JavaBean与XML/JSON 之间相互转换
- JavaBean与XML转换——XStream使用笔记
- xStream完美转换XML、JSON /XStream Xml与JavaBean对象的互转经典【转载】
- xstream:实现JavaBean与XML/JSON的相互转换
- Json、JavaBean、Xml之间的相互转换工具
- Xstream 来实习JavaBean转换成XML
- xstream:实现JavaBean与XML/JSON的相互转换
- 使用xStream框架从JavaBean对象转换成XML文档转换成Java对象
- XStream实现javabean与xml之间相互转换
- xstream:实现JavaBean与XML/JSON的相互转换
- xStream(javabean转换成xml)
- XStream(JavaBean转换为xml)
- XStream实现javabean与xml之间相互转换
- xstream简介(bean与xml转换工具)