Leer un archivo XML en Python es muy fácil, el archivo que usaremos para leer 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.
Más información en inglés: https://geekole.com/read-xml-file-in-python/
hola como seria si lo hacemos desde la red el archivo que leamo
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()
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.
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.
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.
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.