5

有没有一种简单的方法来比较两个 XML 结构以确定它们是否具有相同的结构和数据?

我有一个返回 XmlNode 的函数,我正在尝试为它编写单元测试。我将正确的 XML 结果存储在一个文件中。在测试期间,我将文件加载到 XmlDocument 中,找到正确的 XmlNode 并与函数的结果进行比较。直接比较不起作用(如预期的那样)并且 InnerXml 也不起作用。我正在考虑从 InnerXml 中删除所有空格并进行比较,或者编写我自己的比较来遍历树,但我不太喜欢这两个选项。

4

3 回答 3

8

XNode.DeepEquals。使用前请阅读注意事项。

于 2009-08-21T19:43:50.253 回答
2

就像 CodeToGlory 回答的那样,XNode.DeepEquals() 可能适合您的账单,请查看 MSDN 页面上的备注部分。

如果您坚持使用 XmlDocument(而不是 XDocument),答案是:不,没有简单的(现有方法)可以做到这一点。XmlNode 不会覆盖 Equals(),也不会提供替代方法。但是也不是不能写,同样的 Remarks 部分可以作为 tree-walk 算法的起点。

首先要清楚地了解您的需求,包括属性、注释、CDATA 节点等。

于 2009-08-21T20:44:30.710 回答
2

如果必须使用XmlDocument及其支持类型,请考虑使用 Microsoft 的XmlDiffPatch,它对 XML 数据结构执行可自定义的差异操作。

于 2009-08-21T22:26:22.280 回答