lxmlとiterparseメソッドを使用してパーサーを作成し、多くの項目を含む非常に大きなxmlファイルをステップスルーしようとしています。
私のファイルの形式は次のとおりです。
<item>
<title>Item 1</title>
<desc>Description 1</desc>
<url>
<item>http://www.url1.com</item>
</url>
</item>
<item>
<title>Item 2</title>
<desc>Description 2</desc>
<url>
<item>http://www.url2.com</item>
</url>
</item>
これまでのところ、私の解決策は次のとおりです。
from lxml import etree
context = etree.iterparse( MYFILE, tag='item' )
for event, elem in context :
print elem.xpath( 'description/text( )' )
elem.clear( )
while elem.getprevious( ) is not None :
del elem.getparent( )[0]
del context
それを実行すると、次のようなものが得られます。
[]
['description1']
[]
['description2']
空白のセットは、urlタグの子であるアイテムタグも取得するためであり、xpathで抽出する説明フィールドがないことは明らかです。私の望みは、各項目を1つずつ解析してから、必要に応じて子フィールドを処理することでした。私はlxmlライブラリを学んでいるだけなので、サブアイテムを残したままメインアイテムを引き出す方法があるかどうか知りたいのですが。