您的位置:首页 > 其它

关于xtream的工具使用

2014-08-17 21:35 232 查看
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对象 ?

能,手动用方法添加别名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: