如何检查xpath中的路径是否存在?

德米特里·布布嫩科夫(Dmitry Bubnenkov)

此代码成功检查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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章