Python 元素树对xpath的限制

Python 元素树对xpath的限制,python,xml,xpath,elementtree,Python,Xml,Xpath,Elementtree,我使用元素树已经有一段时间了,我喜欢它,因为它简单 但我怀疑它对x路径的实现 这是XML文件 <a> <b name="b1"></b> <b name="b2"><c/></b> <b name="b2"></b> <b name="b3"></b> </a> 程序显示错误: invalid predicate 但是如果我使用 root.fin

我使用元素树已经有一段时间了,我喜欢它,因为它简单

但我怀疑它对x路径的实现

这是XML文件

<a>
  <b name="b1"></b>
  <b name="b2"><c/></b>
  <b name="b2"></b>
  <b name="b3"></b>
</a>
程序显示错误:

invalid predicate
但是如果我使用

root.findall("b[@name='b2']") or 
 root.findall("b[c]")
它起作用了

ElementTree对XPath表达式提供了有限的支持。目标是支持缩写语法的一小部分;完整的XPath引擎不在核心库的范围内

(F.伦德,)

对于支持XPath(1.0)的ElementTree实现,请查看:

>s=“”
"""
>>>从lxml导入etree
>>>t=etree.fromstring(s)
>>>t.xpath(“b[@name='b2'和c]”)
[]
来自:

ElementTree对XPath表达式提供了有限的支持。目标是支持缩写语法的一小部分;完整的XPath引擎不在核心库的范围内


您刚刚发现了实现中的一个限制。你可以用它来代替;它提供了一个与ElementTree兼容的完整接口。

谢谢,那么,您认为lxml在下一版本中必须是python核心的一部分,而不是元素树吗?@hoainamnguen:我不这么认为:)
root.findall("b[@name='b2']") or 
 root.findall("b[c]")
>>> s = """<a>
  <b name="b1"></b>
  <b name="b2"><c /></b>
  <b name="b2"></b>
  <b name="b3"></b>
</a>"""
>>> from lxml import etree
>>> t = etree.fromstring(s)
>>> t.xpath("b[@name='b2' and c]")
[<Element b at 1340788>]