基础代码:
@Test public void fun1(){ List<Province> proList = getProinveList(); XStream xstream = new XStream(); String s = xstream.toXML(proList); System.out.println(s); }
结果:
/* <list> --List类型显示list <cnitcast.demo1.Province> --javabean的类型为Province,他元素的名称为类的完整名 <name>北京</name> --java的属性名 <cities> --javabean的属性名 <cnitcast.demo1.City> --类名 <name>东城区</name> --属性名 <description>dongchengqu</description> </cnitcast.demo1.City> <cnitcast.demo1.City> <name>昌平区</name> <description>changpingqu</description> </cnitcast.demo1.City> </cities> </cnitcast.demo1.Province> <cnitcast.demo1.Province> <name>辽宁</name> <cities> <cnitcast.demo1.City> <name>沈阳</name> <description>shenyang</description> </cnitcast.demo1.City> <cnitcast.demo1.City> <name>葫芦岛</name> <description>huludao</description> </cnitcast.demo1.City> </cities> </cnitcast.demo1.Province> </list>
处理之后代码:
@Test public void fun5(){ List<Province> proList = getProinveList(); XStream xstream = new XStream(); //给指定的类型指定别名 xstream.alias("china", List.class); xstream.alias("province", Province.class); xstream.alias("city", City.class); //把province类型的name属性,生成<province>元素的属性 xstream.useAttributeFor(Province.class,"name"); //去除<cities>这样的Collection类型的属性 xstream.addImplicitCollection(Province.class, "cities"); //让city类的,名为description属性不生成对应的xml元素 xstream.omitField(City.class, "description"); String s = xstream.toXML(proList); System.out.println(s); }
结果:
/* <china> <province name="北京"> <city> <name>东城区</name> </city> <city> <name>昌平区</name> </city> </province> <province name="辽宁"> <city> <name>沈阳</name> </city> <city> <name>葫芦岛</name> </city> </province> </china>
* */
崔希凡老师的视频截图