[英]How to get text for a root element using 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
some_tag.find("strong").text
返回<strong>
標記之間的文本。
我希望some_tag.text
能夠返回<some_tag> ... </some_tag>
之間的所有內容
預期:
<strong>Hello</strong> World
相反,它什么都不返回。
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
輸出:
strong Hello World
有關.text
和.tail
屬性的信息,請參閱:
要獲得您期望的結果,請使用
print etree.tostring(some_tag.find("strong"))
輸出:
<strong>Hello</strong> World
我不確定你理解你的問題,但解析時你有兩個主要的解決方案:
DOMParser:取決於語言,它是node.getNodeValue();
SAXParser:取決於語言,但在例如java中是在fonction:characters(...)
我沒有時間在谷歌搜索,但在python中,我知道MiniDOM(一個DOM解析器): http : //www.blog.pythonlibrary.org/2010/11/12/python-parsing-xml-with-minidom /
我希望我的回答可以幫到你。
這有幫助嗎?
comp = [ etree.tostring(e) for e in some_tag]
print ''.join(comp[0])
編輯:謝謝@mzjin讓我走上正軌
您必須使用內置的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()')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.