2011-12-28 5 views
1

私は大量のXMLファイル、クリエイティブ・コモンズ・ライセンスの辞書をとり、それをデータベースに入れたいと思っています。問題はファイルのドキュメントがないことです。単語の数十万人が大きな(300mb +)xmlファイルをどのように分析してデータベースに取り込みますか?

<entry key="a)rxiereu/s" type="main" id="n5063"> 
    <form opt="n"><orth extent="full" lang="greek" opt="n">a)rxiereu/s</orth></form> 
    <sense level="0" n="0" id="n5063.0" opt="n"><trans opt="n"><tr opt="n">an arch-priest, chief-priest</tr></trans>, <usg opt="n">Hdt.</usg> [...] </sense> 
</entry> 

はすべて<entry>タグとその属性を比較する方法はあり、それらのほとんどはのようなものです、このXMLファイルにありますか?たとえば、<entry>タグのほとんどに<type="main">があります。タイプの他の属性にmain以外の値が含まれていると検出できる方法はありますか?またはentryタグで使用されているすべての属性とsenseというすべての属性がドキュメント全体に含まれていますか?

最後に、私は本当にWebベースの技術、HTML、Javascript、PHPなどに精通しています。だから当然のことながら、これをMySQLデータベースで手に入れる最良の方法は、PHPスクリプトこれは必ず正しいですか?

答えて

1

必要なものはXMLパーサーです。 C++の場合、Tiny XMLがあります。しかし、あなたはWeb技術に精通しているので、私はあなたがPHPと一緒に行くと言います。

Simple XML on PHP.net

を見て、データベースや解析に格納し、一度XMLを解析する場合、私は疑問に思う要素の属性SimpleXMLElement::attributes

を取得する方法について説明しますこのページを繰り返し要求されるであろう。前者の場合、TinyXMLを試すこともできます

+0

SimpleMMLを使用して300mb +を解析するには、PHPに約500mb以上のRAMを与える必要があります。それはあまりにも多い。 – Timur

+0

可能な解決策の1つは、ファイルを管理しやすいサイズに分割することです。 –

+0

それほど簡単ではありません。 XMLの構造が壊れないようにファイルを分割する必要があります。 – Timur

2

このファイルの内容を調べるには、XQueryを使用するのが良い方法です。例えば、質問に対する答えは、「型の他の属性がmain以外の値を持っていれば、私が発見できる方法はありますか?おそらくクエリで答えることができます

distinct-values(//@type) 
関連する問題