使用xml.etree.cElementTree创建带空格的XML文档
我正在做一个项目,需要把各种文本存储在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
就可以了。