xmlunit-2 - XMLUnit NodeFilter 没有发现差异
问题描述
比较两个简单的 XML 并希望比较具有特定 localName 的节点。仅在这种情况下flowerA
。当我使用不等于时,flowerB
它给了我flowerA
节点的差异,当我说等于时,flowerA
它没有任何差异?
public class XMLDiff {
public static void main(String[] args) {
String controlXml = "<flowers><flowerA>Rose</flowerA><flowerB>Daisy</flowerB></flowers>";
String testXml = "<flowers><flowerA>Roses</flowerA><flowerB>Daisies</flowerB></flowers>";
Diff build = DiffBuilder.compare(controlXml).withTest(testXml)
.ignoreWhitespace()
.withNodeFilter(node -> !node.getNodeName().equals("flowerB"))
.build();
System.out.println(build.getDifferences());
}
}
[Expected text value 'Rose' but was 'Roses' - comparing <flowerA ...>Rose</flowerA> at /flowers[1]/flowerA[1]/text()[1] to <flowerA ...>Roses</flowerA> at /flowers[1]/flowerA[1]/text()[1] (DIFFERENT)]
public class XMLDiff {
public static void main(String[] args) {
String controlXml = "<flowers><flowerA>Rose</flowerA><flowerB>Daisy</flowerB></flowers>";
String testXml = "<flowers><flowerA>Roses</flowerA><flowerB>Daisies</flowerB></flowers>";
Diff build = DiffBuilder.compare(controlXml).withTest(testXml)
.ignoreWhitespace()
.withNodeFilter(node -> node.getNodeName().equals("flowerA"))
.build();
System.out.println(build.getDifferences());
}
}
[]
解决方案
您的根元素flowers
与 the 不匹配,NodeFilter
因此您最终什么都没有比较。
NodeFilter
最适合您不想比较的节点的拒绝列表。在您的情况下,您需要确保您还允许在遍历您感兴趣的节点时遇到的所有节点。
推荐阅读
- typescript - javascript中的方法头中如何使用冒号(“:”)?
- javascript - 遇到网络错误时如何在iOS上调试Axios?
- flutter - 我如何防止多次加载图像?
- javascript - 在javascript中以本地日期格式解析日期时间字符串(最好使用luxon)
- ios - 在 UIScrollview 中以编程方式使用 UIStackView 和 Autolayout
- php - 在属性路径“主题”处给出的“App\Entity\Theme”、“Doctrine\Common\Collections\ArrayCollection”类型的预期参数
- haskell - 给定一个 a 列表,从列表中选择 2 个元素,将它们组合起来并将它们添加到新列表中。重复直到新列表与输入列表大小相同
- mql4 - 如何编写 mql4 代码 (EA),用矩形标记列出的蜡烛模式
- snmp - 下一个 pysnmp 包的发布日期
- scala - 检查类型子类型时结果不一致