0

Python で lxml メソッドを使用して解析したい XML があります。要素を解析したので、構造化されたオブジェクトを比較できるようにしたい (デルタを探している)。

解析する必要がある XML ファイルは約 50 ありますが、XML 内のデータは「不均一」な形式になっています (正確な名前はわかりません)。

簡単な XML の例:

<ID 1>
 <parameter A>
 <parameter B>
</ID 1>
<ID 2>
 <parameter A>
 <parameter B>
 <parameter C> 
</ID 2>
<ID 3>
 <parameter A>
</ID 3>

ID を使用して各オブジェクトを分離し、各パラメーター要素を比較するために使用できる適切な db (mySQL?) 構造を作成するにはどうすればよいでしょうか。

これが理にかなっているかどうかはわかりません-私は正しい用語で大したことはありません。

実際のソース xml は、ここにリストされているすべてのファイルです: http://www.nationalarchives.gov.uk/aboutapps/pronom/droid-signature-files.htm

これらのファイルは、過去数年間に更新された同じ構造のバージョンです。DB 内のすべての XML 要素は必要ありません。バージョン番号、リリース日、そして 2 つの主要なセクションにある個々の ID とバイト パターンから始まるサブセットだけが必要です。

それをmysqlにプッシュするのは最善の方法ではないかもしれませんが、そうするなら、python/htmlフロントエンドを使用して検索/比較ツールをまとめると思いました。

4

1 に答える 1

1

あなたの質問における私にとっての重要なフレーズは、「DB 内のすべての XML 要素は必要ありません。サブセットだけが必要です」です。

比較したいサブセットのすべての要素を事前に知ることができることを考えると、データ要素ごとに列を持つ単一のテーブルをお勧めします。これにより、後でデータに関するレポート要件を処理しやすくなります。

要素を行ごとに格納するもう 1 つの方法は、一般にアンチパターンと見なされ、レポートと比較が非常に困難になります。比較する要素のタイプ (または数) が事前にわからない場合は、この種の戦略が必要になる場合があります。

編集:より明確にするために、テーブルに列があると考えていました: ID,Paramater1,Parameter2,Parameter3,Parameter4 ここで、parameterx は、見ている「比較可能なパラメーター」の 1 つです。これらの多くでは、列が null のままになる可能性があるためそのようなパラメータは存在しません。

その場合、すべてのテーブルで 1 つのテーブルのみが存在し、そのテーブルには ID ごとに 1 つの行が存在します。

于 2012-04-11T08:26:28.143 に答える