我正在尝试使用xml.etree.elementtree
用Python写出xml文件。问题在于它们不断生成一行。我希望能够轻松地引用它们,所以如果可能的话我真的希望能够干净利落地写出来。
这就是我得到的
<Language><En><Port>Port</Port><UserName>UserName</UserName></En><Ch><Port>IP地址</Port><UserName>用户名称</UserName></Ch></Language>
这是我想看到的。
<Language>
<En>
<Port>Port</Port>
<UserName>UserName</UserName>
</En>
<Ch>
<Port>IP地址</Port>
<UserName>用户名称</UserName>
</Ch>
</Language>
答案 0 :(得分:58)
您可以使用toprettyxml()
中的xml.dom.minidom
功能来执行此操作:
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = ElementTree.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent="\t")
我们的想法是在字符串中打印Element
,使用minidom解析它,然后使用toprettyxml
函数再次将其转换为XML。
答案 1 :(得分:21)
您可以使用库lxml,它是ElementTree的超集。它的 tostring()方法包含参数pretty_print - 例如:
>>> print(etree.tostring(root, pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>