簡體   English   中英

lxml獲取元素的完整ext

[英]lxml get full ext of element

我有以下xml:

<text>test<br/><br/><a href="/nature/19700707">All you need to know about British birds.</a><br/></text>

我希望將標記<text>的全部內容設置為11111

我正在使用pythong和lxml,以下是我的代碼:

import nltk
import lxml.etree as le
current_file = '/Users/noor/Dropbox/apps/APIofLife/src/clear_description/bird.rdf'
f = open(current_file,'r')
doc=le.parse(f)
for elem in doc.xpath("//text"):
        elem.text = "11111"
f.close()
f = open(current_file,'w')
f.write(le.tostring(doc))
f.close()

但是,運行上面的代碼后,我的結果是:

<text>11111<br/><br/><a href="/nature/19700707">All you need to know about British birds.</a><br/></text>

我想知道為什么標記<text>的全部內容未更改為11111

根據lxml.etree._Element文檔text屬性對應於第一lxml.etree._Element元素之前的文本。

您需要刪除子元素:

>>> import lxml.etree as le
>>>
>>> root = le.fromstring('''<text>test<br/><br/>
... <a href="/nature/19700707">All you need to know about British birds.</a>
... <br/></text>''')
>>> for elem in root.xpath("//text"):
...     elem.text = '1111'
...     del elem[:]  # <----------
...
>>> le.tostring(root)
'<text>1111</text>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM