1

我需要检查 XML 文档是否包含给定的 XML DOM 子树。我只需要确保该子树中的所有元素和属性都存在于文档中。但是,文档的子树中可以有更多元素或属性与给定子树匹配以进行比较。我希望他们从比较中被跳过。

到目前为止,我已经实现了自己的解决方案,它在给定的 XML 文档中找到由 Node 类表示的子树。此 Node 类仅包含比较所需的属性 - 元素名称、文本内容、子节点列表和属性映射。我已经实现了我自己的类并且没有使用 org.w3c.dom.Node 因为它太大了,包含我的测试场景的许多不必要的属性。由根节点元素表示的子树一个接一个地迭代,并使用 XPath 在给定的 XML 文档中搜索其每个子树,直到检查整个树或找不到任何子树。

此解决方案仅在我需要检查子树是否存在时才有效。但是,我使用它来检查经常更改的大型配置文件,并且很难找到更改发生的确切位置。这就是为什么我考虑使用一些现有的解决方案,这些解决方案具有更好的输出并且可以很容易地看到差异。不幸的是,我找不到任何符合我标准的东西。

有没有允许这样做的工具?我听说过 XMLUnit 并快速查看了它,但我不确定它是否能够在忽略任何其他元素或属性的文档中找到子树。如果可能的话,你能告诉我一个如何在 XMLUnit 中执行此操作的示例吗?

4

1 回答 1

0

不,这不是 XMLUnit 1.x 非常适合的任何东西。您可以使用 XPath 获取子树的根节点,将它们导入新文档并进行比较 - 但仍需要过滤掉您不感兴趣的所有差异。

我们目前正在研究 XMLUnit 2.x,它可能在某一时刻包含可以帮助您的工具(它目前对您来说不会比 1.x 更好),但它还远未完成。

于 2015-02-03T16:51:31.593 回答