1.XStream的作用
可以把JavaBean转换为(序列化为)xml文件
这样就可以实现对象向xml的转换,当客户端与浏览器进行交互时,服务器可以将对象直接返回给客户端
2.XStream的jar包
- 核心JAR包:xstream-1.4.7.jar
- 必须依赖包:xpp3_min-1.1.4c(xml pull parser,一款速度很快的解析器)
3.使用步骤
- XStream xstream=new XStream()
- String xmlStr=xstream.toXML(javabean);
4.使用细节
- 更换别名:把类型对应的元素名修改了
xstream.alias("china",List.class);让List类型生成的元素名为china
- 让类的成员生成元素的属性
xstream.useAttributeFor("province",Province.class);//让Province类的名为name的成员,生成<province>元素的name属性
- 去除connection类型的成员,我们只需要它里面的内容,而不再需要他这个标签
xstream.addInplicitCollection(Province.class,"citys");
- 去除类的指定成员,让其不再生成xml元素
xstream.omitField(City.class,"description");
5.应用实例
这里我们把一个省份集合转换成xml文件
城市类,包含城市名称和描述:
/*
* 城市类
*/
public class City {
private String name;// 城市名字
private String description;// 城市描述
public City(String name, String description) {
this.name=name;
this.description=description;
// TODO Auto-generated constructor stub
}
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;
}
}
省份类包含省份名称,城市集合:
import java.util.ArrayList;
import java.util.List;
/*
* 省份
*/
public class Province {
private String name;
private List<City> citys=new ArrayList<City>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<City> getCitys() {
return citys;
}
public void setCitys(List<City> citys) {
this.citys = citys;
}
public void addCity(City city) {
citys.add(city);
}
}
测试类,将JavaBean转换成xml
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import JavaBean.City;
import JavaBean.Province;
public class XStreamTest {
//得到省份集合
public static List<Province> getProvince(){
Province p1=new Province();
p1.setName("北京");
p1.addCity(new City("东城区","dongChengQu"));
p1.addCity(new City("昌平区","changPingQu"));
Province p2=new Province();
p1.setName("河北省");
p1.addCity(new City("保定市","baoDingShi"));
p1.addCity(new City("石家庄市","shiJiaZuang"));
List<Province> provinces=new ArrayList<Province>();
provinces.add(p1);
provinces.add(p2);
return provinces;
}
public static void main(String[] args) {
//获取省份集合
List<Province> provinces=getProvince();
//创建xStream对象
XStream xstream=new XStream();
//将xml文件各行改变别名
xstream.alias("china",List.class);
xstream.alias("province",Province.class);
xstream.alias("city",City.class);
//让类的成员生成为类的属性
xstream.useAttributeFor(Province.class, "name");//让Province的类的成员name,生成为Province的属性
//去除connection类型的成员,我们只需要里面的元素,而不需要里面的值
xstream.addImplicitCollection(Province.class,"citys");
//去除类的指定成员,让其不生成xml元素
xstream.omitField(City.class, "description");
//将集合转成xml文件
String s=xstream.toXML(provinces);
System.out.println(s);
}
}