XStream的作用
XStream可以把JavaBean对象转换成xml文件。通常服务器给客户端响应的数据是来自数据库的一组对象,这时通过把对象转化成xml再响应给客户端,可以使用XStream。
XSteam具体使用
XSteam的jar包
核心JAR包:xstream-1.4.7.jar;
必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);
使用步骤
XStream xstream = new XStream();
String xmlStr = xstream.toXML(javabean);
使用细节:
设置别名:xstream.alias(别名, 类)
将子元素设置成属性:xstream.useAttributeFor(类名, 子元素名)
去除Collection类型的标签名: xstream.addImplicitCollection(类名, 元素名)
去除指定类名,不生成对应的xml元素:xstream.omitField(类名, 元素名)
具体代码示例
建立两个javabean:City.java和Province.java
public class City {
String name;//城市名
String description;//城市描述
public City(){
}
public City(String name,String description){
this.name=name;
this.description=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;
}
}
Province.java
public class Province {
String name;//省份名
List arrayList=new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getArrayList() {
return arrayList;
}
public void setArrayList(List arrayList) {
this.arrayList = arrayList;
}
public void addCity(City city){
arrayList.add(city);
}
}
测试类:XStreamTest.java
public class XStreamTest {
public List getProvince(){
List provinceList=new ArrayList<>();
Province province1=new Province();
province1.setName("北京");
City city1=new City("海淀区","haidianQu");
City city2=new City("西土城区","xituchengQu");
province1.addCity(city1);
province1.addCity(city2);
Province province2=new Province();
province2.setName("安徽");
City city3=new City("合肥市","hefei");
City city4=new City("蚌埠市","bengbu");
province2.addCity(city3);
province2.addCity(city4);
provinceList.add(province1);
provinceList.add(province2);
return provinceList;
}
/**
* 无任何处理,得到的xml
*
*
* 北京
*
*
* 海淀区
* haidianQu
*
*
* 西土城区
* xituchengQu
*
*
*
*
* 安徽
*
*
* 合肥市
* hefei
*
*
* 蚌埠市
* bengbu
*
*
*
*
*/
@Test
public void func1(){
//得到省份list
ListprovinceList=getProvince();
//创建XSTream对象
XStream xStream=new XStream();
//得到省份对象的xml
String s=xStream.toXML(provinceList);
System.out.println(s);
}
/**
*
* 将 替换成
* 替换成
* 替换成
*
*
*
* 北京
*
*
* 海淀区
* haidianQu
*
*
* 西土城区
* xituchengQu
*
*
*
*
* 安徽
*
*
* 合肥市
* hefei
*
*
* 蚌埠市
* bengbu
*
*
*
*
*/
@Test
public void func2(){
//得到省份list
ListprovinceList=getProvince();
//创建XSTream对象
XStream xStream=new XStream();
//将生成的xml内容对应的标签替换别名
xStream.alias("china",List.class);
xStream.alias("province",Province.class);
xStream.alias("city",City.class);
//得到省份对象的xml
String s=xStream.toXML(provinceList);
System.out.println(s);
}
/**
* 隐藏掉省份中的城市集合属性
*
*
*
* 北京
*
* 海淀区
* haidianQu
*
*
* 西土城区
* xituchengQu
*
*
*
* 安徽
*
* 合肥市
* hefei
*
*
* 蚌埠市
* bengbu
*
*
*
*/
@Test
public void func3(){
//得到省份list
ListprovinceList=getProvince();
//创建XSTream对象
XStream xStream=new XStream();
//将生成的xml内容对应的标签替换别名
xStream.alias("china",List.class);
xStream.alias("province",Province.class);
xStream.alias("city",City.class);
//隐藏掉省份中的城市集合属性
xStream.addImplicitCollection(Province.class,"arrayList");
//得到省份对象的xml
String s=xStream.toXML(provinceList);
System.out.println(s);
}
/**
* 把province类的成员,变成province标签的属性
*
*
*
* 海淀区
* haidianQu
*
*
* 西土城区
* xituchengQu
*
*
*
*
* 合肥市
* hefei
*
*
* 蚌埠市
* bengbu
*
*
*
*/
@Test
public void func4(){
//得到省份list
ListprovinceList=getProvince();
//创建XSTream对象
XStream xStream=new XStream();
//将生成的xml内容对应的标签替换别名
xStream.alias("china",List.class);
xStream.alias("province",Province.class);
xStream.alias("city",City.class);
//隐藏掉省份中的城市集合属性
xStream.addImplicitCollection(Province.class,"arrayList");
//把province类的成员,变成province标签的属性
xStream.useAttributeFor(Province.class,"name");
//得到省份对象的xml
String s=xStream.toXML(provinceList);
System.out.println(s);
}
/**
*
* 去掉city中的description
*
*
*
* 海淀区
*
*
* 西土城区
*
*
*
*
* 合肥市
*
*
* 蚌埠市
*
*
*
*/
@Test
public void func5(){
//得到省份list
ListprovinceList=getProvince();
//创建XSTream对象
XStream xStream=new XStream();
//将生成的xml内容对应的标签替换别名
xStream.alias("china",List.class);
xStream.alias("province",Province.class);
xStream.alias("city",City.class);
//隐藏掉省份中的城市集合属性
xStream.addImplicitCollection(Province.class,"arrayList");
//把province类的成员,变成province标签的属性
xStream.useAttributeFor(Province.class,"name");
//去掉city中的description
xStream.omitField(City.class,"description");
//得到省份对象的xml
String s=xStream.toXML(provinceList);
System.out.println(s);
}
}
来源:http://www.icode9.com/content-1-159651.html