Как проверить, существует ли путь в xpath? - PullRequest
1 голос
/ 09 апреля 2019

Этот код успешно проверяет, существует ли 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 существует.

Код:

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 Ответ

1 голос
/ 09 апреля 2019

Я не уверен, что это то, что вам нужно, но я боюсь, что единственный способ добраться туда - это вот так:

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

Выход:

True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...