1

我有两个 XML 文件,我需要检查它们是否包含相同的确切信息。

无论标签或属性顺序如何。

例如,这两个 XML 文件应该相等:

测试1.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=(',', ':'))

4

1 回答 1

1

对于那些对此主题感兴趣的人,我创建了一个xml-verifier脚本,它通过将 xml 转换为 JSON 文件,然后将这两个文件导出为 Canonical JSON 并对它们进行比较。

https://github.com/mozilla-services/amo2kinto/blob/1.7.2//amo2kinto/verifier.py#L80-L108

于 2016-12-22T09:09:13.583 回答