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

Python 如何使用lxml获取根元素的文本?,python,lxml,Python,Lxml,我完全搞不懂为什么lxml.text会给我子标记的文本,而不是根标记的文本 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")

我完全搞不懂为什么lxml
.text
会给我子标记的文本,而不是根标记的文本

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

相反,它不返回任何内容。

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

DOMParser:根据语言的不同,它是node.getNodeValue()

SAXParser:取决于语言,但以java为例,它的作用是:字符(…)

我没有时间在google上搜索,但在python中,我知道MiniDOM(DOM解析器):


我希望我的回答能对你有所帮助。

你可以在这里找到缺少的文本

>>> some_tag.find("strong").tail
' World'
查看并搜索“尾巴”。这有帮助吗

comp = [ etree.tostring(e) for e in some_tag]
print ''.join(comp[0])
编辑:谢谢@mzjin让我走上正轨

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
有关
.text
.tail
属性的信息,请参阅:

要获得预期的准确结果,请使用

print etree.tostring(some_tag.find("strong"))
输出:

<strong>Hello</strong> World
你好世界

您必须使用内置的lxml方法来检索标记之间的所有文本

  from lxml import etree
  xml='''<some_tag class="abc"><strong>Hello</strong> World</some_tag>'''
  tree = etree.fromstring(xml)
  print(''.join(tree.xpath('//text()')))
从lxml导入etree
xml=''你好世界''
tree=etree.fromstring(xml)
打印(''.join(tree.xpath('//text()'))

我尝试了minidom,但似乎也不起作用
some_tag_md=minidom.parseString(“HelloWorld”)
some_tag_md.nodeValue
:/
  from lxml import etree
  xml='''<some_tag class="abc"><strong>Hello</strong> World</some_tag>'''
  tree = etree.fromstring(xml)
  print(''.join(tree.xpath('//text()')))