1. 程式人生 > >關於xstram忽略不知元素兩種處理方法

關於xstram忽略不知元素兩種處理方法

  1. 專案pom檔案中Xstram引入
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.7</version>
		</dependency>
  1. 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);
  1. 部分解析處理方法(自定義忽略類、使用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高版本中使用