2016-10-28 64 views
0

我有兩個字符串格式的xml。需要跳過少數節點來比較兩者。結果只需要節點和相應值的差異。如何通過跳過少數節點來比較兩個xmls?

假設我有以下兩個個XML:

留言-1

<block4> 
    <tag> 
     <name>35B</name> 
     <value>/GB/B0W1VM9</value> 
    </tag> 
</block4> 

消息 - 2

<block4> 
    <tag> 
     <name>35B</name> 
     <value>/US/999999999 
    NOT AVAILABLE AT PRESENT</value> 
    </tag> 
</block4> 

我使用XMLUnit但我想找到區別於少數幾個塊,並希望跳過少數具有特定值的節點。如<tag>中的值所示::PREV應該被跳過。

注意:最後要在excel中打印結果。

用下面的代碼而不是有用:https://stackoverflow.com/a/16471601/3493471

回答

0

使用XMLUnit 2.x,您可以使用NodeFilter並抑制要跳過的節點。類似於

DiffBuilder b = DiffBuilder.compare(some-input) 
    .withTest(some-test) 
    .withNodeFilter(n -> !":PREV".equals(n.getTextContent())) 
    ... 
1

我覺得你還是可以使用XMLUnit測試那份工作,但你不能使用默認設置。相反,您可能想要實現忽略某些屬性或節點的自定義DifferenceEvaluator

有關詳細信息和示例,請參閱XMLUnit DifferenceEvaluator