如何使用lxml获取根元素的文本?

Jas*_*rth 4 python lxml

我完全难以理解为什么lxml .text会给我一个子标签的文本但是为root标签.

some_tag = etree.fromstring('<some_tag class="abc"><strong>Hello</strong> World</some_tag>')

some_tag.find("strong")
Out[195]: <Element strong at 0x7427d00>

some_tag.find("strong").text
Out[196]: 'Hello'

some_tag
Out[197]: <Element some_tag at 0x7bee508>

some_tag.text
Run Code Online (Sandbox Code Playgroud)

some_tag.find("strong").text返回<strong>标记之间的文本.

我希望some_tag.text能在两者之间归还<some_tag> ... </some_tag>

预期:

<strong>Hello</strong> World
Run Code Online (Sandbox Code Playgroud)

相反,它什么都不返回.

mzj*_*zjn 8

from lxml import etree

XML = '<some_tag class="abc"><strong>Hello</strong> World</some_tag>'

some_tag = etree.fromstring(XML)

for element in some_tag:
    print element.tag, element.text, element.tail
Run Code Online (Sandbox Code Playgroud)

输出:

strong Hello  World
Run Code Online (Sandbox Code Playgroud)

有关.text.tail属性的信息,请参阅:

要获得您期望的结果,请使用

print etree.tostring(some_tag.find("strong"))
Run Code Online (Sandbox Code Playgroud)

输出:

<strong>Hello</strong> World
Run Code Online (Sandbox Code Playgroud)


Tho*_*duc 0

我不确定是否理解你的问题,但你在解析中有两个主要解决方案:

DOMParser :根据语言,它是 node.getNodeValue();

SAXParser :取决于语言,但在 java 中例如在函数中:characters(...)

我没有时间在谷歌上搜索,但在Python中,我知道MiniDOM(DOM解析器): http://www.blog.pythonlibrary.org/2010/11/12/python-parsing-xml-with-minidom /

希望我的回答能够帮助到您。