Как получить все строки из всех вложенных тегов тега xml с библиотекой python lxml.etree?

У меня есть файл xml, в котором возможно следующее:

...
<a><b>This is</b> some text about <c>some</c> issue I have, parsing xml</a>
...

Изменить: Предположим, теги могут быть вложенными не только на уровне, то есть

<a><b><c>...</c>...</b>...</a>

Я придумал это с помощью библиотеки python lxml.etree.

context = etree.iterparse(PATH_TO_XML, dtd_validation=True, events=("end",))
for event, element in context:
    tag = element.tag
    if tag == "a":
        print element.text # is empty :/
        mystring = element.xpath("string()")
        ...

Но как-то идет не так.

Я хочу целую строку

"This is some text about some issue I have, parsing xml"

Но я получаю только пустую строку. Какие-либо предложения? Спасибо!


person Aufwind    schedule 30.05.2011    source источник


Ответы (1)


Этот вопрос задавали много раз.

Вы можете использовать lxml.html.text_content() метод.

import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

ССЫЛКА: Отфильтровать теги HTML и разрешить объекты в python

ИЛИ используйте метод lxml.etree.strip_tags().

REF: В lxml, как мне удалить тег, но сохранить все содержимое?

person silverfox    schedule 30.05.2011