如何比较两个XML节点结构(使用Delphi)

5

有没有一种方法可以在 Delphi 中比较两个 XML 节点?

我正在使用 MSXML 解析器将 XML 加载到 IXmlDOMDocument2 中。节点存储在 IXmlDOMNode 中。

如果有帮助的话,我可以使用 Delphi 的 TXMLDocument。我不想下载任何第三方组件。

我只想比较节点的结构,而不是值。

我看到了一个类似于 Java 的帖子/实用程序,但没有 Delphi 的。

谢谢!


更新了问题,不再关心属性或值。只是想找一种简单的方法来比较这两个结构。 - sse
你希望如何呈现/描述这些差异? - David Heffernan
我在这一点上非常灵活。也许可以通过引用传递三个字符串列表。前两个将标识存在于一个但不存在于另一个中的节点。第三个包含差异。我知道节点会下钻,因此列表中的字符串将包含节点路径。 - sse
1个回答

0

由于您只想比较结构,因此可以将节点转换为“完整路径”并将它们作为字符串进行比较。

例如,假设有以下树:

树A

Root -> Node1 -> Child1
              -> Child2
     -> Node2

树 B

Root -> Node1 -> Child1
     -> Node2

从转换为'完整路径',您会得到:

树A

Root
Root\Node1
Root\Node1\Child1
Root\Node1\Child2
Root\Node2

树 B

Root
Root\Node1
Root\Node1\Child1
Root\Node2

通过迭代完整路径列表,您可以快速检查和比较它们是否存在于另一个树中。您还可以轻松地在树上找到节点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接