最近开发webService接口,用到了@XStreamAlias,在这里记录下来,下面主要通过一个简单的demo来说明使用方法。
demo地址:https://download.youkuaiyun.com/download/junge1545/10547577
一.XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;从java对象序列化为xml,toXML()即可,很方便。xstream也支持注解方式,这些都是为了简化输出而设计。
二.上代码
1.创建了一个实体类
package bean; import com.thoughtworks.xstream.annotations.XStreamAlias; /** * @author 作者 E-mail: * @version 创建时间:2018年7月17日 下午5:00:38 * 类说明 */ @XStreamAlias("User") public class User { @XStreamAlias("name") private String name; @XStreamAlias("age") private String age; @XStreamAlias("SEX") private String sex; public User(String name, String age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]"; } }
2.创建一个工具类XstreamUtil
package util;
/**
* @author 作者 E-mail:
* @version 创建时间:2018年7月17日 下午5:04:49
* 类说明
*/
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class XstreamUtil {
/**
* 将xml转换为bean
* @param <T> 泛型
* @param xml 要转换为bean的xml
* @param cls bean对应的Class
* @return xml转换为bean
*/
public static <T> T xmlToObject(String xml, Class<T> cls){
XStream xstream = new XStream(new DomDriver());
//xstream使用注解转换
xstream.processAnnotations(cls);
return (T) xstream.fromXML(xml);
}
}
3.测试
public class Test {
public static void main(String[] args) {
//xml转对象
String xml="<User>\n"
+" <name>peter</name> \n"
+" <age>13</age> \n"
+" <SEX>男</SEX> \n"
+" </User>";
User user = XstreamUtil.xmlToObject(xml, User.class);
System.out.println(user);
//对象转xml
User user2 = new User("java","10","女");
XStream xstream = new XStream();
xstream.autodetectAnnotations(true);//自动检测模式,默认
String xml2 = xstream.toXML(user2);
System.out.println(xml2);
}
}
输出结果
------------xml转成对象-----------
User [name=peter, age=13, sex=男]
--------------对象转成xml-----------
<User>
<name>java</name>
<age>10</age>
<SEX>女</SEX>
</User>
后面再说其他注解