2016-10-28 82 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