python lxml添加一个子元素,保留所有父树
我有这样的想法:python lxml添加一个子元素,保留所有父树,python,python-3.x,lxml,Python,Python 3.x,Lxml,我有这样的想法: <source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source> <source><en />Some text <g>that is like this.<g> Needs </g&
<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
<source><en />Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
一些类似这样的文本。需要。我想保留这个结构
我想添加一个标记,以获得以下结果:
<source><en>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></en></source>
一些类似这样的文本。需要。我想保留这个结构
但是,append、insert或subElement都不会保留父元素的结构
from lxml import etree
xml = et.fromstring('<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>')
root = xml.getroot()
element = et.Element('en')
root.insert(0, element)
print(et.tostring(root))
从lxml导入etree
xml=et.fromstring('像这样的一些文本。需要。我想保留这个结构')
root=xml.getroot()
元素=et.element('en')
root.insert(0,元素)
打印(et.tostring(根))
但是,它会插入一个空标记。我不是在猜测如何保持家长的整体结构如下:
<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
<source><en />Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
一些类似这样的文本。需要。我想保留这个结构
您可以重命名原始根元素,然后将其附加到新的根元素
from lxml import etree
old_root = etree.fromstring('<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>')
old_root.tag = "en"
new_root = etree.Element("source")
new_root.append(old_root)
print(etree.tostring(new_root))
从lxml导入etree
old_root=etree.fromstring('类似于此的一些文本。需要。我想保留此结构')
old_root.tag=“en”
new_root=etree.Element(“源”)
新的\u根。追加(旧的\u根)
打印(etree.tostring(新根))
结果:
<source><en>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></en></source>
一些类似这样的文本。需要。我想保留这个结构
这是我的解决方案。希望这会有所帮助
干杯