需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar)
1、工具类XstreamUtil
packagecom.learn.util;
importcom.thoughtworks.xstream.XStream;
importcom.thoughtworks.xstream.io.xml.DomDriver;
/**
*
*@ClassName: XstreamUtil.java
*@Description:
*@author: fengzf fengzf@gstarcad.com
*@Date: 2016年12月6日
*
*/
publicclassXstreamUtil {
/**
*将bean转换为xml
*@paramobj转换的bean
*@returnbean转换为xml
*/
publicstaticString objectToXml(Objectobj) {
XStreamxStream=newXStream();
// xstream使用注解转换
xStream.processAnnotations(obj.getClass());
returnxStream.toXML(obj);
}
/**
*将xml转换为bean
*@param泛型
*@paramxml要转换为bean的xml
*@paramclsbean对应的Class
*@returnxml转换为bean
*/
publicstatic T xmlToObject(Stringxml, Classcls) {
XStreamxstream=newXStream(newDomDriver());
// xstream使用注解转换
xstream.processAnnotations(cls);
return(T)xstream.fromXML(xml);
}
}
2、Java普通实体类转xml
实体类Message.java代码
packagecom.learn.entity;
importcom.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("Response")
publicclassMessage {
@XStreamAlias("returncode")
privateStringreturnCode;
@XStreamAlias("returnmessage")
privateStringreturnMessage;
@XStreamAlias("status")
privateintstatus;
@XStreamAlias("time")
privateStringreqTime;
publicString getReturnCode() {
returnreturnCode;
}
publicvoidsetReturnCode(StringreturnCode) {
this.returnCode=returnCode;
}
publicString getReturnMessage() {
returnreturnMessage;
}
publicvoidsetReturnMessage(StringreturnMessage) {
this.returnMessage=returnMessage;
}
publicintgetStatus() {
returnstatus;
}
publicvoidsetStatus(intstatus) {
this.status=status;
}
publicString getReqTime() {
returnreqTime;
}
publicvoidsetReqTime(StringreqTime) {
this.reqTime=reqTime;
}
}
3、XML字符串转实体
@XStreamAlias使用
一、 特点:
简化的API;
无映射文件;
高性能,低内存占用;
整洁的XML;
不需要修改对象;支持内部私有字段,不需要setter/getter方法
提供序列化接口;
自定义转换类型策略;
二、 使用场景
Transport转换
Persistence 持久化对象
Configuration 配置
Unit Tests 单元测试
Interface服务之间XML消息的交互