いくつかの広範な単体テストの基本クラスの一部として、C# (.NET) で 1 つの XmlDocument オブジェクトのノードを別のオブジェクトと再帰的に比較するヘルパー関数を作成しています。これのいくつかの要件:
- 最初のドキュメントはsource です。たとえば、XML ドキュメントをどのように表示したいかです。したがって、2 番目は違いを見つけたいものであり、最初のドキュメントにない余分なノードを含めてはなりません。
- あまりにも多くの重大な違いが見つかった場合は例外をスローする必要があり、人間が説明を一目見れば簡単に理解できるはずです。
- 子要素の順序は重要です。属性は任意の順序にすることができます。
- 一部の属性は無視できます。具体的には
xsi:schemaLocation
とxmlns:xsi
ですが、どれがどれであるかを渡したいと思います。 - 名前空間のプレフィックスは、属性と要素の両方で一致する必要があります。
- 要素間の空白は無関係です。
- 要素には子要素またはのいずれかがありますが、両方はありません。
InnerText
私は何かをまとめていますが、そのようなコードを書いた人はいますか?ここで共有できますか?
余談ですが、1 番目と 2 番目のドキュメントを何と呼びますか? 私はそれらを「ソース」と「ターゲット」と呼んでいますが、ソースは私がターゲットに見せたいものであるため、間違っているように感じます。そうでない場合、例外をスローします。