如何使用 Python 创建 XML 文件?

How to create XML file using Python?

我想创建一个 XML 文件。 我试过了,但是格式看起来很糟糕,它只显示在一行中。

这是它:

import xml.etree.cElementTree as ET
root = ET.Element("data")
doc = ET.SubElement(root, "status", date="20210123")

ET.SubElement(doc, "name", name="john").text = "some value1"
ET.SubElement(doc, "class", name="abc").text = "some vlaue2"

tree = ET.ElementTree(root)
tree.write("FILE.xml")

输出为:

<data><status date="20210123"><name name="john">some value1</name><class name="abc">some vlaue2</class></status></data>

但我的期望输出是:

<?xml version="1.0" encoding="UTF-8"?>

<data>
     <status>
          <name name="john">some value1</name>
          <class name="abc">some vlaue2</class>
     </status>
</data>

任何人都可以给我一个想法,请。我真的很感激。谢谢

你需要

  1. 使用 ET.tostring() 将您的 xml 作为字符串
  2. 使用xml.dom.minidom从字符串
  3. 中得到一个DOM对象
  4. 使用 DOM 对象的 toprettyxml() 获取 xml 作为格式化字符串
  5. 通过简单地拆分和连接格式化字符串,将编码信息添加到 xml 声明部分
  6. 将字符串写入文件

代码:

import xml.etree.cElementTree as ET
import xml.dom.minidom

m_encoding = 'UTF-8'

root = ET.Element("data")
doc = ET.SubElement(root, "status", date="20210123")
ET.SubElement(doc, "name", name="john").text = "some value1"
ET.SubElement(doc, "class", name="abc").text = "some vlaue2"

dom = xml.dom.minidom.parseString(ET.tostring(root))
xml_string = dom.toprettyxml()
part1, part2 = xml_string.split('?>')

with open("FILE.xml", 'w') as xfile:
    xfile.write(part1 + 'encoding=\"{}\"?>\n'.format(m_encoding) + part2)
    xfile.close()

输出文件

<?xml version="1.0" encoding="UTF-8"?>

<data>
    <status date="20210123">
        <name name="john">some value1</name>
        <class name="abc">some vlaue2</class>
    </status>
</data>