所以我必須編寫一個「重複檢查器」來比較兩個XML並查看它們是否相同(包含相同的數據)。現在,因爲它們來自同一個類並且從XSD生成,所以結構中的元素順序很可能是相同的。Python ElementTree重複檢查器
我可以考慮做重複檢查的最佳方式是設置兩個字典(dictLeft,dictRight)並將xpath#值保存爲密鑰和發生次數。事情是這樣的:
左:
{ '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}
這兩個字典比較會給我的這兩個個XML是否是相同或不相當準確的指示(有是我可能得到錯誤結果的奇怪機會,但它非常遙遠)。
其他人有更好的主意嗎?也許ElementTree中我不知道的一個函數?
編輯:爲了更好地解釋:
<root><person><name>Bob</name><surname>marley</surname></root>
和
<root><person><surname>marley</surname><name>Bob</name></root>
將被視爲相同。我忽略了屬性。這個想法是保持代碼儘可能簡單,同時不會太多地影響性能。
你能更好地定義這個問題嗎?你對「相同」的定義是什麼?子元素可以以任意順序嗎?可以將不同的子元素嵌套視爲相同嗎?屬性是否重要等等。另外,您的目標是什麼?性能?正確性?代碼簡單? – marr75 2011-03-14 15:44:16
「相同」意味着包含的數據是相同的,不一定是順序。我忽略了屬性。 – Andre 2011-03-15 11:23:27