- 项目pom文件中Xstram引入
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.7</version>
</dependency>
- Xstram的使用方法
@XStreamAlias("Root")
public class BaoRongPayReqXml {
/**保融支付请求头 */
private BaoRongPayHeadDto Head;
/**包容支付请求体 */
private BaoRongPayBodyDTO RealTimeSingleTransReq;
public BaoRongPayHeadDto getHead() {
return Head;
}
public void setHead(BaoRongPayHeadDto head) {
Head = head;
}
public BaoRongPayBodyDTO getRealTimeSingleTransReq() {
return RealTimeSingleTransReq;
}
public void setRealTimeSingleTransReq(BaoRongPayBodyDTO realTimeSingleTransReq) {
RealTimeSingleTransReq = realTimeSingleTransReq;
}
}
//定义 XStream
XStream xstream=new XStream();
//定义涉及的类
xstream.processAnnotations(new Class[] { BaoRongPayReqXml.class,
BaoRongPayHeadDto.class, BaoRongPayBodyDTO.class,
BaoRongPayReqTran.class, BaoRongPayResXml.class,
BaoRongPayResHeadDTO.class, BaoRongPayResBodyDTO.class,
BaoRongPayResTran.class });
// java类转xml报文 baoRongPayReqXml(java)======reqXmlStr(xml)
String reqXmlStr = xstream.toXML(baoRongPayReqXml).replace("__","_");
// xml转java实体类
BaoRongPayResXml baoRongPayResXml = (BaoRongPayResXml) xstream
.fromXML(realResultXml);
- 部分解析处理方法(自定义忽略类、使用ignoreUnknownElements方法)
// 使用IgnoreXmlNodeXstream操作
public class IgnoreXmlNodeXstream extends XStream {
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(@SuppressWarnings("rawtypes") Class definedIn, String fieldName) {
// 不能识别的节点
if (definedIn == Object.class) {
return false;
}
// 节点名称为fileName的掠过
if (fieldName.equals("fileName")) {
return false;
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
}
xstream.ignoreUnknownElements(); //在Xstream高版本中使用