有没有一种简单的方法来比较两个 XML 结构以确定它们是否具有相同的结构和数据?
我有一个返回 XmlNode 的函数,我正在尝试为它编写单元测试。我将正确的 XML 结果存储在一个文件中。在测试期间,我将文件加载到 XmlDocument 中,找到正确的 XmlNode 并与函数的结果进行比较。直接比较不起作用(如预期的那样)并且 InnerXml 也不起作用。我正在考虑从 InnerXml 中删除所有空格并进行比较,或者编写我自己的比较来遍历树,但我不太喜欢这两个选项。
XNode.DeepEquals。使用前请阅读注意事项。
就像 CodeToGlory 回答的那样,XNode.DeepEquals() 可能适合您的账单,请查看 MSDN 页面上的备注部分。
如果您坚持使用 XmlDocument(而不是 XDocument),答案是:不,没有简单的(现有方法)可以做到这一点。XmlNode 不会覆盖 Equals(),也不会提供替代方法。但是也不是不能写,同样的 Remarks 部分可以作为 tree-walk 算法的起点。
首先要清楚地了解您的需求,包括属性、注释、CDATA 节点等。
如果必须使用XmlDocument
及其支持类型,请考虑使用 Microsoft 的XmlDiffPatch,它对 XML 数据结构执行可自定义的差异操作。