關於xstram忽略不知元素兩種處理方法
阿新 • • 發佈:2019-01-03
- 專案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高版本中使用