我目前正在尝试使用 XMLUnit比较两个 XML 文件的库。 其中之一,候选,是由我的代码从 Java 对象(使用 JAXB)生成的,另一个是引用(我无法修改它)。 基本上我试图证明给定一个引用 XML 文件我可以反序列化它(使用 Jaxb 和我自己的一些类)然后将它序列化回另一个文件并且仍然具有相同的内容。
该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进(类似于“ pretty-print ”版本)时,比较失败,而当缩进正常时也不会。 例如生成candidate时没有缩进,内容是一行的,如果正确(手动)缩进,比较就可以了。
这是 XMLUnit 生成的错误消息:
[different] Expected number of child nodes '3' but was '1'
你们有解决这个问题的想法吗? 也许解决方案是生成一个 pretty-print 版本的候选,在这种情况下,您有没有想过将它与 JAXB 序列化程序结合起来?
顺便说一下,如果您现在有更好的 Java 解决方案来比较 XML 文件,我会很高兴知道它;)
预先感谢您的帮助。
最佳答案
通过在 org.custommonkey.xmlunit.XMLUnit
类上设置属性,您可以在与树进行比较时放宽 XMLUnit 使用的一些约束。
在你的情况下,你可能想要:
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);
您可能还会发现 setIgnoredAttributeOrder
属性也很有用。
关于java - XMLUnit - Xml 文件缩进对比较的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248517/