此代码成功检查xpath中是否存在单个元素:
x = root.xpath("boolean(//*[contains(local-name(), 'bar')])", namespaces=lnamespaces)
print("xx ", x)
但是我需要检查是否foo/bar
存在类似的路径。我试过了:
x = root.xpath("boolean(//*[contains(local-name(), 'foo/bar')])", namespaces=lnamespaces)
print("xx ", x)
但是,即使该foo/bar
路径存在,上面的代码也会计算为false 。
码:
from lxml import etree
mystr = """
<some>
<foo>
<bar>
</bar>
</foo>
<baz>
</baz>
<some>
"""
etxml = etree.HTML(mystr)
result = etxml.xpath("boolean(//*[contains(local-name(), 'foo/bar')])")
print("result: ", result)
我不确定这是否是您所需要的,但恐怕我能到达那里的唯一方法是这样的:
tree_struct = etree.ElementTree(etxml)
for e in etxml.iter('bar'):
print('/foo/bar' in tree_struct.getpath(e))
输出:
True
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句