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 为其Elementclassfind和methods提供有限的 XPath 表达式支持findallfindtext没有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 回答