Python:xPath 在 ElementTree 中不可用

标签 python xml-parsing python-2.7 elementtree iterparse

我正在尝试使用 ElementTreeiterparse() 来解析 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为其Elementfind , findallfindtext方法(没有 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/

相关文章:

IOS Coredata 检查属性是否存在

c++ - 将xsd转换为C++代码的工具

python - 在 if 语句中比较三个变量

xlwings的python,我不明白其中一条规则

python - 如何在 huey 任务中进行模拟/猴子修补?

c++ - 缺少用于 map 初始化的构造函数

javascript - Javascript 和 Python 之间的 RSA 通信

python - 如何从另一个 python 脚本执行 python 脚本并将其输出发送到文本文件中

python - 考虑到 GIL,asyncio 怎么可能不是线程安全的?

python - Scrapy 项目,抓取时间表