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

时间:2019-04-09 10:03:53

标签: python xpath

此代码成功检查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)

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您所需要的,但恐怕我唯一能到达那里的方法是这样的:

tree_struct = etree.ElementTree(etxml)
for e in etxml.iter('bar'):
   print('/foo/bar' in tree_struct.getpath(e))

输出:

True