我尝试在JUnit
中编写一个测试用例来比较两个xml文件。使用xmlunit
,我应该能够找到所有的差异。但是在比较时,虽然我提供了类似的文件,但我总是得到false
。每个xml文件的时间戳都不同。因此,尽管xml文件中的所有其他内容都相同,但它返回false。请提供任何正确的方法来解决这个问题。
在比较两个xml文件时,我需要忽略xml文件中的timestamp标记。我如何忽略自闭标签?
<XML>
<TIMESTAMP>KALA</TIMESTAMP>
<B>JIHN</B>
<C>Lion</C>
</XML>
<XML>
<TIMESTAMP>QWER</TIMESTAMP>
<B>JIHN</B>
<C NAME =LION/>
</XML>
<B>JIHN</B>
答案 0 :(得分:0)
XMLUnit 2.x具有NodeFilter
s的概念,使用它可以轻松忽略TIMESTAMP
个元素。像
String control = "<XML>\n"
+ "<TIMESTAMP>KALA</TIMESTAMP>\n"
+ "<B>JIHN</B>\n"
+ "<C>Lion</C>\n"
+ "</XML>";
String test = "<XML>\n"
+ "<TIMESTAMP>QWER</TIMESTAMP>\n"
+ "<B>JIHN</B>\n"
+ "<C NAME=\"LION\"/>\n"
+ "</XML>";
Diff d = DiffBuilder.compare(Input.fromString(control))
.withTest(Input.fromString(test))
.withNodeFilter(n -> !(n instanceof Element && Nodes.getQName(n).getLocalPart().equals("TIMESTAMP")))
.build();
可能是一个开始。
我不确定自闭标签是什么意思。就XMLUnit而言,<x></x>
和<x/>
是完全相同的。您的示例中的C
元素显然不是。第一个没有属性,只有嵌套文本,第二个有一个名为NAME
但没有嵌套测试的属性。