5

2 つの XML ファイルを比較し、Python スクリプトで違いを処理する効率的な方法を見つけようとしています。シナリオは、次のような 2 つの 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 です。注意が必要なのは、2 つのファイルのエントリがごくわずかしか異なっておらず、異なる情報のみを処理する必要があることです。つまり、どのエントリが変更または追加されたかを効率的に (!) 調べる必要があります。残念ながら、XML ファイルには、私がまったく気にしないいくつかのオプションのエントリも含まれています。

次の解決策を検討しました。

  1. 両方のファイルを解析して DOM ツリーにし、ループで比較します
  2. 両方のファイルをセットに解析し、set.difference などの演算子を使用します
  3. 処理の一部を grep や diff などの Linux ツールに渡すようにしてください。

このようなアプローチの実行経験があり、進むべき方向を教えてくれる人はいますか?

4

1 に答える 1

1

比較したいものだけを持つキャッシュされた中間形式を作成します。2 つのファイルA.xml&B.xmlを比較する場合、それらのA.cachedandを比較しB.cached、欠落している場合はそれらを生成し、ファイルの変更時に削除します (またはタイムスタンプなどに基づいて再生成します)。生成コストは複数の比較で償却され、不要なエントリを繰り返すことはありません。

" " の形式は.cached、何を気にかけ、どのくらいの情報/コンテキストが必要かによって異なります。バイナリ表現を持つ可能性さえあるかもしれません

于 2013-10-13T10:39:15.417 に答える