我想使用xml.etree.ElementTree基于xml模板(template.xml)生成新的xml文件(new.xml)。我们的想法是仅将<name>
标记的值从“all”更改为“New”,使new.xml文件的其余部分与template.xml完全相同。我可以更改<name>
的值,但new.xml看起来与template.xml
这是template.xml:
<?xml version="1.0"?>
<example>
<version>15.0</version>
<lastchange/>
<theme>black</theme>
<group>
<name>all</name>
<description><![CDATA[All Users]]></description>
<scope>system</scope>
<gid>1998</gid>
</group>
</example>
这是new.xml:
<example>
<version>15.0</version>
<lastchange />
<theme>black</theme>
<group>
<name>New</name>
<description>All Users</description>
<scope>system</scope>
<gid>1998</gid>
</group>
</example>
您可以注意到,在new.xml中缺少第一行,<description>
标记的值没有![CDATA] []结构。这是我写的脚本,我正在使用:
import xml.etree.ElementTree as ET
def load_xml(name):
''' Takes an xml file as input. Outputs ElementTree and element'''
tree = ET.parse(name)
root = tree.getroot()
return tree, root
if __name__ == "__main__":
# Change and write the new xml
tree, root = load_xml('template.xml')
group = root.find('group')
group.find('name').text = 'New'
tree.write('new.xml')
有任何帮助吗?谢谢
答案 0 :(得分:0)
--expr
提供兼容API ,因此您只需指定lxml
参数,并在其他地方使用完全相同的代码:
strip_cdata=False