Python:基于xml模板编写新的xml文件

时间:2016-05-09 08:07:57

标签: python xml

我想使用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')

有任何帮助吗?谢谢

1 个答案:

答案 0 :(得分:0)

--expr提供兼容API ,因此您只需指定lxml参数,并在其他地方使用完全相同的代码:

strip_cdata=False