J'essaie d'utiliser xml.etree.elementtree
pour écrire des fichiers XML avec Python. Le problème est qu'ils continuent à être générés sur une seule ligne. Je veux pouvoir les référencer facilement, donc si c'est possible, j'aimerais vraiment pouvoir écrire correctement.
C'est ce que je reçois
<Language><En><Port>Port</Port><UserName>UserName</UserName></En><Ch><Port>IP地址</Port><UserName>用户名称</UserName></Ch></Language>
C'est ce que j'aimerais voir.
<Language>
<En>
<Port>Port</Port>
<UserName>UserName</UserName>
</En>
<Ch>
<Port>IP地址</Port>
<UserName>用户名称</UserName>
</Ch>
</Language>
Vous pouvez utiliser la fonction toprettyxml()
à partir de xml.dom.minidom
pour le faire:
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")
L'idée est d'imprimer votre Element
dans une chaîne, de l'analyser à l'aide de minidom et de le convertir à nouveau en XML à l'aide de la fonction toprettyxml
.
Source: http://pymotw.com/2/xml/etree/ElementTree/create.html
Vous pouvez utiliser la bibliothèque lxml , qui est un sur-ensemble de ElementTree. Sa méthode tostring () inclut un paramètre pretty_print - par exemple:
>>> print(etree.tostring(root, pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>