关于xtream的工具使用

来源:互联网 发布:深圳美达电子软件 编辑:程序博客网 时间:2024/06/06 01:33
Xstream     
  需要的jar包
     xpp3_min-1.1.4c.jar
              xstream-1.3.1.jar
  作用:
将xml字符串转换为java对象,或者将java对象转换为xml字符串




核心类:XStream xs = new XStream();
准备工作,先创建两个java类:City和Province
@XStreamAlias("city")
public class City {
private String name;


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}
}
@XStreamAlias("province")
public class Province {
@XStreamAsAttribute()
private String name;
@XStreamImplicit(itemFieldName = "city")
private List<City> citys;
public List<City> getCitys() {
return citys;
}
public void setCitys(List<City> citys) {
this.citys = citys;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}



}
第一:将java类转换为xml字符串
XStream xs = new XStream();
String xml = xs.toXML(JavaBean);
打印的字符串会将类的包名作为xml的标签,以及里面的字段都会变成标签。
例如将City类变为xml字符串:
<com.domain.City>
 <name>武汉</name>
</com.domain.City>
     将Province变成xml字符串
<com.domain.Province>
<name>湖北</name>
<citys>
<com.domain.City>
<name>武汉</name>
</com.domain.City>
</citys>
</com.domain.Province>


所以为了能将打印的字符串变为我们所想要的格式,可以使用Xstream提供的注解进行格式化输出
提供便捷注解
@XStreamAlias(别名) 对类和变量设置别名
@XStreamAsAttribute  设置变量生成属性
@XStreamOmitField  设置变量 不生成到XML
@XStreamImplicit(itemFieldName = “hobbies”) 设置集合类型变量 别名


使注解生效 
xStream.autodetectAnnotations(true);






第二:将xml字符串变为java对象
Object xs.fromXML(InputStream input);  //将一个下买了指定的流变为java对象
Object xs.fromXML(String xml)  //将xml字符串变为java对象
Object xs.fromXML(InputStream input,Object root)  ?
Object xs.fromXML(String xml,Object root)  ?
注意:转换的xml文档必须与Java对象  的格式对应
例如:将下面xml字符串转换为Java对象
<com.domain.City>
<name>武汉</name>
</com.domain.City>
则进行转换时候:
XStream xs = new XStream();
Object o = xs.fromXML(in);
若对应的java格式一定是:
包名为:com.domain
类名为:City
里面有一个成员属性:name  提供setter/getter方法


若不是则可以使用别名:
a.为类设置别名
xs.alias("city", City.class);
b.为属性添加别名
xstream.useAttributeFor(Blog.class,"author");
 能不能通过注解将 xml转换为制定的java对象  ?
能,手动用方法添加别名






0 0