Python – Leer archivo XML

El archivo que usaremos para lectura en este ejemplo es el siguiente:

datos.xml

<?xml version="1.0"?>
<empresa>
 <empleado id="1">
 <nombre>José Ernesto</nombre>
 <username>jose</username>
 <password>321423</password>
 </empleado>
 <empleado id="2">
 <nombre>Daniel Pérez</nombre>
 <username>dperez</username>
 <password>433543</password>
 </empleado>
</empresa>




Importamos minidom.

from xml.dom import minidom

doc = minidom.parse("/ruta/datos.xml")

nombre = doc.getElementsByTagName("nombre")[0]
print(nombre.firstChild.data)

empleados = doc.getElementsByTagName("empleado")
for empleado in empleados:
    sid = empleado.getAttribute("id")
    username = empleado.getElementsByTagName("username")[0]
    password = empleado.getElementsByTagName("password")[0]
    print("id:%s " % sid)
    print("username:%s" % username.firstChild.data)
    print("password:%s" % password.firstChild.data)

Para comenzar el parseo usamos: doc = minidom.parse(«/ruta/datos.xml»).

Es posible encontrar cualquier nodo del documento como lo hacemos en la línea con la función nombre = doc.getElementsByTagName(«nombre»)[0].

Obtener una lista de nodos y sus atributos:  sid = empleado.getAttribute(«id»).

O  bien obtener otros nodos y su respectivo contenido de texto: username = empleado.getElementsByTagName(«username»)[0].

Con Python es bastante sencillo leer archivos de XML.

5 thoughts on “Python – Leer archivo XML”

    1. Para abrir un xml desde la red:

      from xml.dom import minidom

      def main():
      mydoc = minidom.parse(‘//160.131.102.1/folder1/foler2/data.xml’)
      node = mydoc.getElementsByTagName(‘nombreDelPrimerNodo’)

      for item1 in node:
      print(str(item1))

      pretty_xml_as_string = mydoc.toprettyxml()
      print(str(pretty_xml_as_string))

      if __name__ == «__main__»:
      main()

      1. Y si el xml se lo estoy pasando yo a la URL desde mi escritorio y una vez pasado quiero que lo interprete Python?

        O sea yo me meto en una URL por ejemplo localhost:5000/contacto
        Yo le paso un xml con datos de contacto de esta manera: localhost:5000/contacto?persona=ruta_del_archivo/persona.xml y le doy a enter

        Cómo podría hacer para leer con Python ese xml desde la url? O sea el xml no está dentro de un path definido de la url.

      2. Buenas, y si lo que hago es pasarle un xml a la url desde mi ordenador?

        Es decir yo estoy en una url, por ejemplo: localhost:5000/contacto
        Le paso el xml desde mi ordenador: localhost:5000/contacto?persona=ruta_del_archivo/persona.xml y le doy a enter.

        En definitiva que el archivo xml no está en un path predefinido de la url si no que se lo introduzco yo.

        En este caso cómo se haría para leer el xml desde Python?

        Muchas gracias de antemano.

  1. Perdona, ¿Hay alguna forma más precisa de obtener un elemento? Algo que nos permita obtener el elemento empleado cuyo id es igual a 2; sin tener que recorrer todos los elementos empleados, mirar cuál tiene su id igual a 2 y almacenarlo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *