[英]How to ignore specfic xml elements using xmlunit when comparing two xml files in junit
我试图在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>
XMLUnit 2.x具有NodeFilter
的概念,使用它可以轻松地忽略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
属性,名称为NAME
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.