两个XML文档的快速测试

时间:2018-07-20 16:22:53

标签: xml java-8 xml-parsing

说我有两个XML文档:一个是从BaseX生成的,另一个是从JAXB中的编组过程生成的。

为了验证目的,我想测试两者的相等性。

如果它们的结构和内容相同,则将通过验证。否则,如果不相同,将无法通过验证。

我了解了xml-diff,但是我感兴趣的类似于Boolean result = xmlDoc.isIdenticalTo(thisXmlDoc),而不是两个文档之间的特定区别。

为此使用Java 8。是否存在这样的方法?

1 个答案:

答案 0 :(得分:1)

为XQuery 1.0+或XPath 2.0+安装处理器(例如Saxon或BaseX,因为已经存在),然后运行XPath表达式deep-equal($doc1, $doc2)

一个警告:很难做到这一点。您经常会发现一些无关紧要的小差异,但这些差异仍然会使deep-equal()返回false。撒克逊人提供了另一种saxon:deep-equal(),它可以选择说出文档的哪些方面很重要(例如,空格,名称空间,注释),但这仍然是一个令人沮丧的过程。令人沮丧的部分原因是,deep-equal()并没有告诉您发现了什么区别,并且在弄清楚它是制表符而不是空格字符之前,您可能需要花很长时间来挠头。