我正在尝试使用 ElementTree
的 iterparse()
来解析 iTunes 播放列表,但出现以下错误:
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()
。
最佳答案
xml.etree.ElementTree
provides limited support for XPath expressions为其Element
类 find
, findall
和 findtext
方法(没有 xpath
方法:这就是您收到错误的原因)。
此外,如果您在某个元素上调用 clear()
以节省使用的内存,则只需在处理完该元素及其所有元素后才需要执行此操作 children 。
因此,您需要将代码更改为类似于以下内容:
for event, elem in context:
for child in elem.findall(".//key"):
# process child
elem.clear()
root.clear()
关于Python:xPath 在 ElementTree 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455672/