Python 如何使用lxml获取根元素的文本?
我完全搞不懂为什么lxmlPython 如何使用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")
.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()')))