Ajax学习笔记三|XStream的使用

1.XStream的作用

可以把JavaBean转换为(序列化为)xml文件
这样就可以实现对象向xml的转换,当客户端与浏览器进行交互时,服务器可以将对象直接返回给客户端

2.XStream的jar包

  • 核心JAR包:xstream-1.4.7.jar
  • 必须依赖包:xpp3_min-1.1.4c(xml pull parser,一款速度很快的解析器)

3.使用步骤

  1. XStream xstream=new XStream()
  2. String xmlStr=xstream.toXML(javabean);

4.使用细节

  1. 更换别名:把类型对应的元素名修改了
 xstream.alias("china",List.class);让List类型生成的元素名为china
  1. 让类的成员生成元素的属性
xstream.useAttributeFor("province",Province.class);//让Province类的名为name的成员,生成<province>元素的name属性
  1. 去除connection类型的成员,我们只需要它里面的内容,而不再需要他这个标签
xstream.addInplicitCollection(Province.class,"citys");
  1. 去除类的指定成员,让其不再生成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);
	}
}
原创文章 114 获赞 84 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44867340/article/details/105848706