Pythonでxml.etree.elementtree
を使用してxmlファイルを書き込もうとしています。問題は、それらが1行で生成され続けることです。それらを簡単に参照できるようにしたいので、可能であれば、きれいに書き出すことができるようにしたいです。
これは私が得ているものです
<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>
関数 toprettyxml()
from 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に再度変換するという考え方です。
ライブラリ lxml を使用できます。これはElementTreeのスーパーセットです。そのtostring()メソッドには、パラメータ pretty_print -が含まれます。例:
>>> print(etree.tostring(root, pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>