如何将JavaBean、Array、List和Map等集合,转换成XML格式响应给客户端?
* 使用第三方提供的工具来实现:XStream
* 核心包:xstream-1.4.4.jar
Test.java
* 使用第三方提供的工具来实现:XStream
* 核心包:xstream-1.4.4.jar
* 必要依赖包:xpp3_min-1.1.4c.jar
***********************************************************************************
Provinc.java
package app.bean;
import java.util.List;
public class Province {
private Integer id;
private String name;
private List cities;
public Province(Integer id,String name,List cities) {
this.id = id;
this.name = name;
this.cities = cities;
}
public List getCities() {
return cities;
}
public void setCities(List cities) {
this.cities = cities;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
City.java
package app.bean;
public class City {
private Integer id;
private String name;
public City(Integer id,String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Test.java
package app.test;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import app.bean.City;
import app.bean.Province;
public class Test {
public static void main(String[] args) {
/***************模拟查询数据库的结果********************/
City c1 = new City(1, "长春市");
City c2 = new City(2, "吉林市");
City c3 = new City(3, "松原市");
City c4 = new City(4, "四平市");
City c5 = new City(5, "通化市");
List<City> cities = new ArrayList<City>();
cities.add(c1);
cities.add(c2);
cities.add(c3);
cities.add(c4);
cities.add(c5);
Province p = new Province(1,"吉林省",cities);
/***************模拟查询数据库的结果********************/
/***************如何进行转换**************************/
//1 创建XStream实例对象
XStream xStream = new XStream();
/*
* 2 为xml格式的标签设置别名:
* alias(String name, Class type)
* * name:表示别名
* * type:指定要为哪个JavaBean起别名
*/
xStream.alias("province", Province.class);
xStream.alias("city", City.class);
/*
* 3 为xml格式的标签设置属性
* useAttributeFor(Class definedIn, String fieldName)
* * definedIn:指定要为哪个JavaBean设置属性
* * fieldName:指定要设置哪个属性
*/
xStream.useAttributeFor(Province.class, "id");
xStream.useAttributeFor(Province.class, "name");
xStream.useAttributeFor(City.class, "id");
xStream.useAttributeFor(City.class, "name");
//4 直接进行转换xml
String xml = xStream.toXML(p);
//测试
System.out.println(xml);
/* 打印结果
* <province id="1" name="吉林省">
<cities>
<city id="1" name="长春市"/>
<city id="2" name="吉林市"/>
<city id="3" name="松原市"/>
<city id="4" name="四平市"/>
<city id="5" name="通化市"/>
</cities>
</province>*/
}
}