Как получить все строки из всех вложенных тегов тега XML с помощью библиотеки Python lxml.etree? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть 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"

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

1 Ответ

2 голосов
/ 31 мая 2011

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

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

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

REF: Отфильтровывать теги HTML и разрешать объекты в python

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

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

...