如何在Python 3中将SubElement的内容包装在XML标签中?
我有一个这样的示例xml文件:
<root>
She
<opt>went</opt>
<opt>didn't go</opt>
to school.
</root>
我想创建一个名为的子元素,并把所有的内容放进去。也就是说,
<root>
<sentence>
She
<opt>went</opt>
<opt>didn't go</opt>
to school.
</sentence>
</root>
我知道怎么用ElementTree或lxml来创建一个子元素,但我不知道怎么一次性选择从“She”到“shools”的所有内容。
import lxml.etree as ET
ET.SubElement(root, 'sentence')
I'm lost...
1 个回答
3
你可以反过来做这个事情:也就是说,不是添加一个子元素,而是添加一个新的父元素。我的意思是,把root
标签改成sentence
,然后创建一个新的root
元素,把旧的root
(现在是sentence
)放进新的root
里面:
import lxml.etree as ET
content = '''\
<root>
She
<opt>went</opt>
<opt>didn't go</opt>
to school.
</root>'''
root = ET.fromstring(content)
root.tag = 'sentence'
newroot = ET.Element('root')
newroot.insert(0,root)
print(ET.tostring(newroot))
# <root><sentence>
# She
# <opt>went</opt>
# <opt>didn't go</opt>
# to school.
# </sentence></root>