Python – Leer archivo XML

Leer un archivo XML en Python es muy fácil, el archivo que usaremos para leer en este ejemplo es el siguiente:

» Más ejemplos de Python

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.

Más información en inglés: https://geekole.com/read-xml-file-in-python/

6 comentarios en «Python – Leer archivo XML»

    • 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()

      Responder
      • 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.

        Responder
      • 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.

        Responder
  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.

    Responder
  2. como leo un XML con esta sintaxis:
    quiero leer la informacion que esta en la CDATA.


    AUTORIZADO
    0206202004179037150600120020210001091840010918410
    2020-06-08T15:45:24-05:00
    PRODUCCIÓN

    – <![CDATA[

    2
    1
    QUIFATEX S.A.

    Responder

Deja un comentario

three × = twenty seven