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

How do I output an XML file using ElementTree in python?

我对使用 xml ElementTree 模块编写 xml 文件有点困惑。我试图建立文件: 例如

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

我如何准确地获取它并将其写入文件?

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

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

ElementTree wrapper class. This class represents an entire element hierarchy, and adds some extra support for serialization to and from standard XML.

element is the root element. The tree is initialized with the contents of the XML file if given.

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

您可以使用 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>