繁体   English   中英

有效地比较python中的两个XML文件

[英]Efficiently compare two XML files in python

我正在尝试找到一种有效的方法来比较两个XML文件并处理python脚本中的差异。 场景是我有两个类似于以下的XML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<garage> 
    <car> 
        <color>red</color> 
        <size>big</size> 
        <price>10000</price>
    </car> 
    <car> 
        <color>blue</color> 
        <size>big</size> 
        <price>10000</price>

    <!-- [...] -->

    <car> 
        <color>red</color> 
        <size>big</size> 
        <price>11000</price>
    </car> 
    </car> 
</garage>

这些XML文件包含数千个小对象。 文件本身大小约为5 MB。 棘手的是,这两个文件中只有极少数条目不同,我只需要处理不同的信息。 换句话说:我需要有效地(!)找出哪些条目已更改或已添加。 不幸的是,XML文件还包含一些我根本不关心的可选条目。

我考虑了以下解决方案:

  1. 将两个文件解析为DOM树并在循环中对它们进行比较
  2. 将两个文件解析为集合并使用set.difference等运算符
  3. 尝试将一些处理交给一些linux工具,如grep和diff

这里有没有人有这些方法的表现经验,可以指导我走进去的方向吗?

创建一个缓存的中间格式,只包含您关心比较的内容。 比较两个文件, A.xmlB.xml ,比较它们的A.cachedB.cached ,如果丢失则生成它们并删除文件更改(或根据时间戳等重新生成)。 生成成本将通过多次比较进行摊销,您不会迭代不必要的条目。

.cached ”的格式实际上取决于您关心的内容以及您需要的信息/上下文。 它甚至可能具有二进制表示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM