如何将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 直接进行转换xmlString 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>*/}}