そのため、2 つの XML を比較して同じかどうか (同じデータが含まれているかどうか) を確認するために、「重複チェッカー」を作成する必要があります。これらは同じクラスに由来し、XSD 構造から生成されるため、内部の要素の順序は同じになる可能性が高くなります。
重複チェックを行う最善の方法は、2 つの辞書 (dictLeft、dictRight) を設定し、xpath#value をキーとして保存し、その回数を保存することです。このようなもの:
左:
{ 'my/path/to/name#greg': 1, 'my/path/to/name#john': 2, 'my/path/to/car#toyota': 1}
右
{ 'my/path/to/name#greg': 1, 'my/path/to/name#bill': 1, 'my/path/to/car#toyota': 1}
これら 2 つの辞書を比較すると、これら 2 つの XML が同じかどうかをかなり正確に知ることができます (誤った結果が得られる可能性はまれですが、それはごくわずかです)。
他の誰かがより良いアイデアを持っていますか? 私が知らないElementTreeの関数でしょうか?
編集:よりよく説明するには:
<root><person><name>Bob</name><surname>marley</surname></root>
と
<root><person><surname>marley</surname><name>Bob</name></root>
同じとみなされます。属性を無視しています。アイデアは、パフォーマンスをあまり妨げずに、コードをできるだけ単純に保つことです。