Нормализовать в каноническом виде два XML-файла в Python
У меня есть два XML-файла, и мне нужно убедиться, что они содержат одинаковую точную информацию.
Независимо от тега или порядка атрибутов.
Например, эти два XML-файла должны быть равны:
test1.xml
<blocklist lastupdate="1459262434336" xmlns="http://www.mozilla.org/2006/addons-blocklist">
<emItems>
<emItem blockID="i454" id="sqlmoz@facebook.com">
<versionRange minVersion="0" maxVersion="*" severity="3">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange maxVersion="3.6.*" minVersion="3.6"/>
</targetApplication>
</versionRange>
<versionRange maxVersion="*" minVersion="0"/>
<prefs>
<pref>test.blocklist</pref>
</prefs>
</emItem>
</emItems>
</blocklist>
test2.xml
<blocklist lastupdate="1459262434336" xmlns="http://www.mozilla.org/2006/addons-blocklist">
<emItems>
<emItem blockID="i454" id="sqlmoz@facebook.com">
<prefs>
<pref>test.blocklist</pref>
</prefs>
<versionRange minVersion="0" maxVersion="*" severity="3">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange maxVersion="3.6.*" minVersion="3.6"/>
</targetApplication>
</versionRange>
<versionRange minVersion="0" maxVersion="*"/>
</emItem>
</emItems>
</blocklist>
Я пытался найти некоторые решения, такие как:
Я также собираюсь попробовать это решение
Но есть ли у вас какие-либо идеи о том, что будет моим выбором здесь? Разве XML нормализация и канонизация не должны справиться с этим для меня?
что я тут не так делаю?
Если бы я делал это в JSON, я бы использовал: json.dumps(data, sort_keys=True, separators=(',', ':'))
1 ответ
Для тех, кто интересуется этой темой, я создал xml-verifier
Сценарий, который делает это путем преобразования xml в файл JSON, а затем экспортирует оба файла как Canonical JSON и выполняет их различие.
https://github.com/mozilla-services/amo2kinto/blob/1.7.2//amo2kinto/verifier.py