[ Foro de Python ]

Python y XML

04-Jan-2019 23:46
Invitado (Pythonary)
1 Respuestas

Buenas.

Tengo un pequeño problema al procesar un XML desde Python y espero que alguien pueda echarme un cable. Voy al grano para que nadie pierda mucho tiempo leyendo esto.

Creé este fichero XML:
________________________________________
<Equipo>
<ListaPersonas>
<Persona>
<Dni>11111111A</Dni>
<Nombre>Ana</Nombre>
<Sexo>Femenino</Sexo>
</Persona>
<Persona>
<Dni>22222222B</Dni>
<Nombre>Antonio</Nombre>
<Sexo>Masculino</Sexo>
</Persona>
<Persona>
<Dni>33333333C</Dni>
<Nombre>Marta</Nombre>
<Sexo>Femenino</Sexo>
</Persona>
</ListaPersonas>
</Equipo>
________________________________________


Y también el siguiente código Python:
________________________________________
from xml.etree import ElementTree

arbolXML = ElementTree.parse("Fichero.xml");
equipoXML = arbolXML.getroot();
listPersonasXML = equipoXML[0];
primeraPersonaXML = listPersonasXML[0];

unidad = ElementTree.Element("Ciudad");
unidad.text = "Madrid";
primeraPersonaXML.append(unidad);
arbolXML.write("Fichero.xml");
________________________________________


Después de ejecutar este código, el fichero XML queda así:
________________________________________
<Equipo>
<ListaPersonas>
<Persona>
<Dni>11111111A</Dni>
<Nombre>Ana</Nombre>
<Sexo>Femenino</Sexo>
<Ciudad>Madrid</Ciudad></Persona>
<Persona>
<Dni>22222222B</Dni>
<Nombre>Antonio</Nombre>
<Sexo>Masculino</Sexo>
</Persona>
<Persona>
<Dni>33333333C</Dni>
<Nombre>Marta</Nombre>
<Sexo>Femenino</Sexo>
</Persona>
</ListaPersonas>
</Equipo>
________________________________________


Como se puede ver en la 7ª línea, el campo ciudad se me inserta pero me rompe toda la estructura de indentación. ¿Alguien tiene alguna idea de cómo arreglar esto de una forma fácil?

Millones de gracias.


05-Jan-2019 12:02
Nacho Cabanes (+72)

La mayoría de bibliotecas para XML no te garantizan que se vaya a guardar una etiqueta por línea. Es más, lo habitual es que al exportar guarden todos los datos en una única línea enorme. Pero si lo vas a leer desde otra biblioteca XML y no "a mano", eso no debería ser problema.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)