Как найти рекурсивно для тега XML, использующего LXML?

<?xml version="1.0" ?>
<data>
    <test >
        <f1 />
    </test >
    <test2 >
        <test3>
         <f1 />
        </test3>
    </test2>
    <f1 />
</data>

Используя lxml возможно находить рекурсивно для тега "f1"? Я попробовал findall метод, но он работает только на непосредственных детей.

Я думаю, что должен пойти для BeautifulSoup для этого!!!

49
задан Franck Dernoncourt 1 January 2018 в 22:26
поделиться

1 ответ

Вы можете использовать XPath для рекурсивного поиска:

>>> from lxml import etree
>>> q = etree.fromstring('<xml><hello>a</hello><x><hello>b</hello></x></xml>')
>>> q.findall('hello')     # Tag name, first level only.
[<Element hello at 414a7c8>]
>>> q.findall('.//hello')  # XPath, recursive.
[<Element hello at 414a7c8>, <Element hello at 414a818>]
76
ответ дан 7 November 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: