15

我目前正在尝试使用XMLUnit库来比较两个 XML 文件。其中一个是Candidate,是由我的 Java Objects 代码(使用 JAXB)生成的,另一个是参考(我无法修改它)。基本上,我试图证明给定一个参考 XML 文件,我可以将其反序列化(使用 Jaxb 和我自己的一些类),然后将其序列化回另一个文件,并且仍然具有相同的内容。

该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进(以“漂亮打印”版本的形式)时,比较失败并且缩进正常时也不会。例如,当候选生成时没有缩进,内容是单行的,如果缩进正确(手动)比较是可以的。

以下是 XMLUnit 生成的错误消息:

[不同] 子节点的预期数量为“3”,但为“1”

你们有什么办法解决这个问题吗?也许解决方案是生成候选的漂亮打印版本,在这种情况下,您是否有想法将它与 JAXB 序列化程序结合起来?

顺便说一句,如果您现在有一个更好的 Java 解决方案来比较 XML 文件,我会很高兴知道它;)

在此先感谢您的帮助。

4

1 回答 1

20

在与树进行比较时,您可以通过设置类的属性来放松 XMLUnit 使用的一些约束org.custommonkey.xmlunit.XMLUnit

在您的情况下,您可能想要:

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);

您可能还会发现该setIgnoredAttributeOrder属性也很有帮助。

于 2011-03-09T16:09:49.207 回答