如何在python中使用ElementTree输出XML文件?

时间:2015-07-18 17:21:50

标签: python xml elementtree

我对使用xml ElementTree模块编写xml文件感到有些困惑。我试着构建文档: 例如

a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
d = ET.SubElement(c, 'd')

我如何完全接受这个并将其写入文件?

2 个答案:

答案 0 :(得分:2)

创建ElementTree类的实例并调用write()

  

class xml.etree.ElementTree.ElementTree(element=None, file=None)

     

ElementTree包装类。此类表示整个元素   层次结构,为序列化添加了一些额外的支持   标准XML

     

元素是根元素。树用内容初始化   如果给出,则为XML文件。

tree = ET.ElementTree(a)
tree.write("output.xml")

答案 1 :(得分:2)

您可以使用ElementTree.write()函数 -

编写xml
import xml.etree.ElementTree as ET
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
d = ET.SubElement(c, 'd')
ET.ElementTree(a).write("test.xml")

这将写入文件 - test.xml -

<a><b /><c><d /></c></a>

要在换行符上使用缩进和元素编写xml,可以使用 - xml.dom.minidom.toprettyxml。示例 -

import xml.etree.ElementTree as ET
import xml.dom.minidom as md
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
d = ET.SubElement(c, 'd')
xmlstr = ET.tostring(a).decode()
newxml = md.parse(xmlstr)
newxml = md.parseString(xmlstr)
with open('test.xml','w') as outfile:
    outfile.write(newxml.toprettyxml(indent='\t',newl='\n'))

现在,test.xml看起来像 -

<?xml version="1.0" ?>
<a>
    <b/>
    <c>
        <d/>
    </c>
</a>