XMLUnit - Xml 文件缩进对比较的影响

2022-09-03 13:57:25

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

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

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

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

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

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

提前感谢您的帮助。


答案 1

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

就您而言,您可能需要:

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

客人也可能发现酒店也很有帮助。setIgnoredAttributeOrder


答案 2

推荐