如何使用python的lxml.etree库从xml标记的所有嵌套标记中获取所有字符串?

时间:2011-05-30 20:44:34

标签: python xml string lxml elementtree

我有一个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 个答案:

答案 0 :(得分:2)

这个问题已被多次提出过。

您可以使用lxml.html.text_content()方法。

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

参考:Filter out HTML tags and resolve entities in python

或使用lxml.etree.strip_tags()方法。

参考:In lxml, how do I remove a tag but retain all contents?