XStream

代码:
Province.java
package cn.cmlx.xstream; 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; } public void addCity(City city) { cities.add(city); } }
City.java
package cn.cmlx.xstream; public class City { private String name;// 市名 private String 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; } @Override public String toString() { return "City [name=" + name + ", description=" + description + "]"; } }
Xstream.java
package cn.cmlx.xstream; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.thoughtworks.xstream.XStream; /** * 演示Xstream * * @author 赤名莉香 * */ public class Xstream1 { // 返回javabean集合 public List<Province> getProvinceList() { Province p1 = new Province(); p1.setName("北京"); p1.addCity(new City("东城区", "DongChengQv")); p1.addCity(new City("海淀区", "HaiDianQv")); Province p2 = new Province(); p2.setName("四川"); p2.addCity(new City("成都", "Chengdu")); p2.addCity(new City("达州", "Dazhou")); List<Province> provinceList = new ArrayList<Province>(); provinceList.add(p1); provinceList.add(p2); return provinceList; } @Test public void fun5() { List<Province> proList = getProvinceList(); 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类型的属性 * 去除Province类的名为cities类型的属性 */ xstream.addImplicitCollection(Province.class, "cities"); /* * 让City类的的名为description属性不生成对应的xml元素 */ xstream.omitField(City.class, "description"); /* * 创建XStream对象 调用toML把集合转换成xml字符串 */ String s = xstream.toXML(proList); System.out.println(s); } }
Xstream1.java
运行结果对比:
前:
<list>
<cn.cmlx.xstream.Province>
<name>北京</name>
<cities>
<cn.cmlx.xstream.City>
<name>东城区</name>
<description>DongChengQv</description>
</cn.cmlx.xstream.City>
<cn.cmlx.xstream.City>
<name>海淀区</name>
<description>HaiDianQv</description>
</cn.cmlx.xstream.City>
</cities>
</cn.cmlx.xstream.Province>
<cn.cmlx.xstream.Province>
<name>四川</name>
<cities>
<cn.cmlx.xstream.City>
<name>成都</name>
<description>Chengdu</description>
</cn.cmlx.xstream.City>
<cn.cmlx.xstream.City>
<name>达州</name>
<description>Dazhou</description>
</cn.cmlx.xstream.City>
</cities>
</cn.cmlx.xstream.Province>
</list>
后:
<china>
<province name="北京">
<city>
<name>东城区</name>
</city>
<city>
<name>海淀区</name>
</city>
</province>
<province name="四川">
<city>
<name>成都</name>
</city>
<city>
<name>达州</name>
</city>
</province>
</china>

浙公网安备 33010602011771号