比较C#中的两个XmlNode

时间:2009-08-21 19:40:09

标签: c# .net xml xmlnode

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

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

3 个答案:

答案 0 :(得分:8)

XNode.DeepEquals。在使用之前阅读警告。

答案 1 :(得分:2)

与CodeToGlory一样,XNode.DeepEquals()可能适合您的帐单,请查看MSDN页面上的备注部分。

如果你坚持使用XmlDocument(而不是XDocument),答案是:不,没有简单的(现有方式)来做到这一点。 XmlNode不会覆盖Equals(),或提供替代方法。但是编写并不是不可能,并且相同的备注部分可以用作树木行走算法的起点。

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

答案 2 :(得分:2)

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