使用xml.etree.cElementTree创建带空格的XML文档

1 投票
2 回答
1694 浏览
提问于 2025-04-18 13:46

我正在做一个项目,需要把各种文本存储在xml文件里。不过因为除了我还有其他人会查看和使用这些文件,所以必须让它们的格式看起来整齐、好看。我看到一个关于如何用cElement Tree生成xml文件的问题,在这里,那个人提到如果有人问的话,可以提供一些让文件看起来更漂亮的信息,但实际上并没有具体的内容(我想是因为没有人问过)。所以,简单来说,使用cElementTree有没有办法让xml文件的缩进和空白格式正确?还是我应该放弃,去学习怎么用lxml呢?

2 个回答

1

你可以使用minidom来美化我们的xml字符串:

from xml.etree import ElementTree as ET
from xml.dom import minidom

# Return a pretty-printed XML string for the Element.
def prettify(xmlStr):
    INDENT = "    "
    rough_string = ET.tostring(xmlStr, 'utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent=INDENT)

# name of root tag
root = ET.Element("root")

child = ET.SubElement(root, 'child')
child.text = 'This is text of child'

prettified_xmlStr = prettify(root)
output_file = open("Output.xml", "w")
output_file.write(prettified_xmlStr)
output_file.close()
print("Done!")
0

我在这里自己回答一下:

用ElementTree是不行的。最好的办法是下载并安装lxml这个模块,然后在生成新的XML文件时,简单地启用这个选项。

prettyprint = True

就可以了。

撰写回答