5

iterparse()ofを使用して iTunes プレイリストを解析しようとしてElementTreeいますが、次のエラーが発生します。

AttributeError: 'Element' object has no attribute 'xpath'

コードを以下に示します。

import xml.etree.ElementTree as ET
context = ET.iterparse(file,events=("start", "end"))
    # turn it into an iterator
    context = iter(context)
    # get the root element
    event, root = context.next()
    for event, elem in context:
        z = elem.xpath(".//key")
        elem.clear()
        root.clear()
    print z

私が間違っていることは何ですか?ファイルが大きすぎるので、iterparse()とにかく使用する必要があります。

4

1 に答える 1

2

xml.etree.ElementTree Elementclass findfindallおよびfindtextメソッドの XPath 式の限定的なサポートを提供します (メソッドがないxpathため、エラーが発生します)。

また、使用済みメモリを節約するために要素を呼び出す場合は、要素とそのすべての子の処理が完了した後clear()にのみ実行する必要があります。

したがって、コードを次のようなものに変更する必要があります。

for event, elem in context:
    for child in elem.findall(".//key"):
        # process child
    elem.clear()
    root.clear()
于 2012-11-19T17:19:26.860 に答える