XMLUnit - NodeFilter不返回任何内容

时间:2017-04-25 13:08:43

标签: java xml xmlunit

我目前正在尝试使用XML Unit。我有两个文件,测试和控制,我想比较。

我的情况是我只想测试两个事物(版本和ID)并忽略其余部分。

以下是我试图做的事情:

   final org.xmlunit.diff.Diff result = DiffBuilder
            .compare(controlxml)
            .withTest(testxml)
            .withNodeFilter(node -> node.getNodeName().equals("id") && node.getNodeName().equals("version"))
            .build();

这不起作用,因为我没有得到任何差异。它似乎过滤掉了每一个差异。

如果我这样做:

.withNodeFilter(node -> !node.getNodeName().equals("name") ...)

我可以过滤掉我不想要的东西(比如示例中的名字)。然而,这不太可行,因为有很多事情我不想比较。

我是否真的必须明确定义我要过滤的每一个?为什么我不能告诉它我想要的两个" node.getNodeName()。equals"它会自动过滤掉其余部分吗?

要么我做错了,要么我迷路了。亲爱的Stack Overflow,感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

不使用或(||)和(&&)

final org.xmlunit.diff.Diff result = DiffBuilder
        .compare(controlxml)
        .withTest(testxml)
        .withNodeFilter(node -> node.getNodeName().equals("id") || node.getNodeName().equals("version"))
        .build();