python - library - Utilice xml.etree.elementtree para imprimir archivos XML con buen formato
xml python 3 (2)
Puede usar la biblioteca lxml , que es un superconjunto de ElementTree. Su método tostring () incluye un parámetro pretty_print , por ejemplo:
>>> print(etree.tostring(root, pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>
Esta pregunta ya tiene una respuesta aquí:
- Bonita impresión XML en Python 19 respuestas
Estoy tratando de usar xml.etree.elementtree
para escribir archivos xml con Python. El problema es que se siguen generando en una sola línea. Quiero poder referenciarlos fácilmente, así que si es posible, me gustaría poder escribirlos de forma clara.
Esto es lo que estoy recibiendo
<Language><En><Port>Port</Port><UserName>UserName</UserName></En><Ch><Port>IP地址</Port><UserName>用户名称</UserName></Ch></Language>
Esto es lo que me gustaría ver.
<Language>
<En>
<Port>Port</Port>
<UserName>UserName</UserName>
</En>
<Ch>
<Port>IP地址</Port>
<UserName>用户名称</UserName>
</Ch>
</Language>
Puede usar la función toprettyxml()
de xml.dom.minidom
para hacer eso:
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")
La idea es imprimir su Element
en una cadena, analizarlo con minidom y convertirlo nuevamente en XML utilizando la función toprettyxml
.
Fuente: http://pymotw.com/2/xml/etree/ElementTree/create.html