基础代码:
@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>
* */
崔希凡老师的视频截图