Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lxml.objectify替换节点文本,同时保留属性_Python_Xml_Lxml - Fatal编程技术网

Python 使用lxml.objectify替换节点文本,同时保留属性

Python 使用lxml.objectify替换节点文本,同时保留属性,python,xml,lxml,Python,Xml,Lxml,使用lxml.objectify如下: from lxml import objectify o = objectify.fromstring("<a><b atr='someatr'>oldtext</b></a>") o.b = 'newtext' 从lxml导入objectify o=objectify.fromstring(“oldtext”) o、 b=‘新文本’ 导致newtext,丢失节点属性。它似乎是直接用新创建的元素替换元

使用
lxml.objectify
如下:

from lxml import objectify

o = objectify.fromstring("<a><b atr='someatr'>oldtext</b></a>")

o.b = 'newtext'
从lxml导入objectify
o=objectify.fromstring(“oldtext”)
o、 b=‘新文本’
导致
newtext
,丢失节点属性。它似乎是直接用新创建的元素替换元素,而不是简单地替换元素的文本

如果我尝试使用
o.b.text='newtext'
,它会告诉我 “StringElement”对象的属性“text”不可写

有没有一种方法可以在objectify中实现这一点,而不必将其拆分为不同的元素并涉及etree?我只想替换内部文本,而不处理节点的其余部分。我觉得我错过了一些简单的东西

>>> type(o.b)
<type 'lxml.objectify.StringElement'>
出于某种原因,你不能只做:

>>> o.b.text = 'newtext'
然而,这似乎是可行的:

>>> o.b._setText('newtext')
\u setText()
正是我想要的。非常感谢。
>>> o.b._setText('newtext')