说我有两个XML文档:一个是从BaseX生成的,另一个是从JAXB中的编组过程生成的。
为了验证目的,我想测试两者的相等性。
如果它们的结构和内容相同,则将通过验证。否则,如果不相同,将无法通过验证。
我了解了xml-diff,但是我感兴趣的类似于Boolean result = xmlDoc.isIdenticalTo(thisXmlDoc)
,而不是两个文档之间的特定区别。
为此使用Java 8。是否存在这样的方法?
答案 0 :(得分:1)
为XQuery 1.0+或XPath 2.0+安装处理器(例如Saxon或BaseX,因为已经存在),然后运行XPath表达式deep-equal($doc1, $doc2)
。
一个警告:很难做到这一点。您经常会发现一些无关紧要的小差异,但这些差异仍然会使deep-equal()
返回false
。撒克逊人提供了另一种saxon:deep-equal()
,它可以选择说出文档的哪些方面很重要(例如,空格,名称空间,注释),但这仍然是一个令人沮丧的过程。令人沮丧的部分原因是,deep-equal()
并没有告诉您发现了什么区别,并且在弄清楚它是制表符而不是空格字符之前,您可能需要花很长时间来挠头。