2009-08-21 2 views
5

2つのXML構造を比較して同じ構造とデータを持つかどうかを簡単に調べる方法はありますか?C#で2つのXmlNodesを比較する

私はXmlNodeを返す関数を持っており、そのための単体テストを作成しようとしています。正しいXML結果をファイルに保存します。テストを中止します。ファイルをXmlDocumentに読み込み、適切なXmlNodeを探し、関数の結果と比較します。まっすぐな比較は(期待どおり)動作せず、InnerXmlも機能しません。 InnerXmlからすべての空白を削除し、それを比較することを検討しています。または自分自身を作成し​​てツリーを歩くことを比較していますが、いずれのオプションもあまり好きではありません。

+0

実行している.NETのバージョンは何ですか? –

答えて

2

XMLのカスタマイズデフの操作を実行し、MicrosoftのXmlDiffPatch、データ構造。

7

XNode.DeepEquals。それを使用する前に警告を読んでください。

+0

質問は 'XmlDocument' /' XmlNode'についてですが、LINQ to XMLに関してではありません。 –

+0

正確には、彼の質問はXML構造を比較することです。彼の問題は彼のアプローチ(XmlDocumentを使って)です。私はCodeToGlory:XNode.DeepEqualsに同意します。 –

2

CodeToGloryと同様に、XNode.DeepEquals()が請求書に適合している可能性がありますので、MSDNページの備考欄を確認してください。

(XDocumentの代わりに)XmlDocumentがついている場合、答えは:いいえ、それを行うための単純な方法はありません。 XmlNodeはEquals()をオーバーライドしたり、代替を提供しません。しかし、書くことは不可能ではなく、同じ備考セクションをツリーウォークアルゴリズムの出発点として使用することができます。

は、属性、コメント、CDATAノードなどについて、最初の要件の明確なイメージを得るのですかあなたはXmlDocumentとそのサポートの種類を使用する必要がある場合は、使用を検討して

関連する問題