python - ElementTree: 'match' 方法的 'find' 参数的语法是什么?

标签 python lxml elementtree

官方文档here只是说,“匹配可能是标签名称或路径”,但我在任何地方都没有看到“路径”的定义。通过查看网络上的示例,我发现它是一些类似 XPath 的简化表示法,但不清楚到底允许什么——例如,路径是否应该以 / 开头,或者以 开头//,或者根本没有分隔符?我可以使用 [@att = "value"] 指定属性吗?

最佳答案

好吧,查看源代码http://hg.python.org/cpython/file/2.7/Lib/xml/etree/ElementTree.py我们发现 Element.find 的实现为

def find(self, path, namespaces=None):
    return ElementPath.find(self, path, namespaces)

ElementPath 实现为

try:
    from . import ElementPath
except ImportError:
    ElementPath = _SimpleElementPath()

_SimpleElementPath 仅检查标签名称:

# emulate pre-1.2 find/findtext/findall behaviour
def find(self, element, tag, namespaces=None):
    for elem in element:
        if elem.tag == tag:
            return elem
    return None

让我们看看ElementPath.py:http://hg.python.org/cpython/file/f98e2944cb40/Lib/xml/etree/ElementPath.py它指出,

# limited xpath support for element trees

所以我假设有效的 XPath 可能是 find 的有效参数。我对 XPath 不太熟悉,无法确定它到底支持什么,但是http://effbot.org/zone/element-xpath.htm描述了五年前它支持的程度,并包含一个语法表。

ElementTree provides limited support for XPath expressions. The goal is to support a small subset of the abbreviated syntax; a full XPath engine is outside the scope of the core library.

http://docs.python.org/dev/library/xml.etree.elementtree.html#xpath-support有一个更新的表。看起来并没有太大不同。

关于python - ElementTree: 'match' 方法的 'find' 参数的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731040/

相关文章:

Python 脚本不会从 Aws Ubuntu 终端运行

python - 安装 easy_install... 以安装 lxml

python - 如何使用 Python 在多行文本中搜索 XPath 中的内容?

python - 如何从根目录中具有 xmlns 的 XML 文件获取数据

python - ElementTree 返回元素而不是 ElementTree

python - 如何使用Python的ElementTree获取child的child

Python Challenge Lvl 3 解释(警告剧透!)

python - 我怎样才能从 Twitter 用户那里获得大量关注者,然后关注他们?

python - 临时解压字典

python使用lxml解析html表