使用注解方式生成xml格式,而不是使用 xstream.toXML()方法。
1、在JavaBean上添加注解
在类上添加 @XStreamAlias("city")
在属性上添加@XStreamAsAttribute
@XStreamAlias("city")
public class City {
@XStreamAsAttribute
private String name;
@XStreamAsAttribute
private String description;
//封装……
public City() {
}
public City(String name, String description) {
super();
this.name = name;
this.description = description;
}
@Override
public String toString() {
return "City [name=" + name + ", description=" + description + "]";
}
}
2、在测试方法 test4() 上
@Test //引入注解
public void test4() throws Exception{
City city1_1 = new City("长沙","娱乐之都");
City city1_2 = new City("韶山","伟人故居");
City city2_1 = new City("石家庄","河北省会");
City city2_2 = new City("承德","避暑山庄");
List<City> cities1 = new ArrayList<City>();
cities1.add(city1_1);
cities1.add(city1_2);
List<City> cities2 = new ArrayList<City>();
cities2.add(city2_1);
cities2.add(city2_2);
XStream xstream = new XStream();
//引入一行代码,进行注解的检测
xstream.autodetectAnnotations(true);
System.out.println(xstream.toXML(cities1));
System.out.println(xstream.toXML(cities2));
}
}
3、控制台显示
<list>
<city name="长沙" description="娱乐之都"/>
<city name="韶山" description="伟人故居"/>
</list>
<list>
<city name="石家庄" description="河北省会"/>
<city name="承德" description="避暑山庄"/>
</list>
如果再属性上添加 @XStreamOmitField 注解,则该属性将不会解析为 xml 中的属性,比如
@XStreamAsAttribute
@XStreamOmitField
private String description;
<list>
<city name="长沙"/>
<city name="韶山"/>
</list>
<list>
<city name="石家庄"/>
<city name="承德"/>
</list>