2017-03-27 4 views
0

異なるブロックのリストを含む10 GB xmlファイルがあります。ここに私のファイルの抜粋です:xmlファイルをブロック単位で解析し、各ブロック内の値を取得します。

<image> 
    <ref>www.test.com</ref> 
    <label/> 
    <number>0</number> 
    <ID>ID0</ID> 
    <name>test1</name> 
    <comment> 
     <line number="0">This is a comment</line> 
     <line number="1">This is also another comment</line> 
    </comment> 
    <creationDate>2017-02-13T15:46:16-04:00</creationDate> 
</image> 

<result> 
    <ref>www.test1.com</ref> 
    <label/> 
    <number>001</number> 
    <ID>RE1</ID> 
    <name>test2</name> 
    <comment> 
     <line number="0">This is a comment2</line> 
    </comment> 
    <creationDate>2017-01-13T15:46:16-04:00</creationDate> 
</result> 

<image> 
    <ref>www.test3.com</ref> 
    <label/> 
    <number>1</number> 
    <ID>ID1</ID> 
    <value>10030</value> 
    <name>test3</name> 
    <comment> 
     <line number="0">This is a comment3</line> 
    </comment> 
    <creationDate>2017-04-13T15:46:16-04:00</creationDate> 
</image> 

だから私の目標は、シリアル化モードで自分のファイルを解析するためにcelementtreeの iterparse を使用しますが一度に各ブロックを取得したいです。たとえば、ブロック全体をの画像にして、そのブロック内の値を解析するのが好きです。 たとえば、最初のイメージブロック(*<image>... </image>*)ブロックを取得し、www.test.com、0、id0、test1の値を印刷する必要があります。これはコメントであり、2017-02-13T15:46:16です。 -04:00。

は、だから私は、次のコードを使用しますが、それが唯一の各線または要素内の値を印刷することができませんでした、ラインでxmlファイルの行を読んでいるようだ:

for event, element in ET.iterparse(pathtofile): 
    print element.tag , element.attrib 

は、あなたがこの問題で私を助けることができます。私はXML構文解析で全く新しいです。 また、解析された各ブロックをPythonで辞書に変換したいと思います。出来ますか?

答えて

関連する問題