我有一个使用JDOM2库生成XML文档的应用程序。在我的单元/集成测试中,我需要将生成的文档与手工制作的样本文档进行比较以确保相等。
使用标准的org.w3c.dom.Document对象,我会通过XMLUnit来实现。如何用JDOM2做到这一点?
答案 0 :(得分:2)
JDOM API本身不支持与JDOM进行深度等式。你需要建立自己的。这是JDOM 2.1的一个很好的潜在功能....嗯。也许我会添加类似的东西(但要做到正确需要相对复杂)。
两个JDOM文档的深度等同很复杂。您需要比较命名空间,属性,注释,处理指令等。这些差异通常(某些)并不重要 - 比如注释或空白区别:也许一方有两个文本成员Text(“Hello”)和文本(“世界!”),另一个可能有一个文本成员文本(“Hello World!”)。它们是一样的吗?
我的建议是使用JDOM2的一些便利功能(比如getDescendants()迭代器),然后用你自己的逻辑将两个迭代器相互比较。
我会考虑一个原生的JDOM API机制,它有一些回调接口,这样就可以进行深度比较(可能有一些东西可以组织一个可比较的结果(负数,0或正数),小于,等于或大于