这里的官方文档只是说,“匹配可能是标签名称或路径”,但我在任何地方都没有看到“路径”的定义。通过查看网络上的示例,我收集到它是一些精简的 XPath 类表示法,但不清楚究竟允许什么 - 例如,路径应该以 a /
、 a//
还是根本没有分隔符开头?我可以用 指定属性[@att = "value"]
吗?
问问题
923 次
1 回答
3
好吧,查看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 为 XPath 表达式提供有限的支持。目标是支持缩写语法的一小部分;完整的 XPath 引擎超出了核心库的范围。
http://docs.python.org/dev/library/xml.etree.elementtree.html#xpath-support有一个更新的表格。它看起来并没有太大的不同。
于 2012-07-30T23:50:50.803 回答