Python Archivo XML: cómo leer, escribir y analizar
¿Qué es XML?
XML significa lenguaje de marcado extensible. Fue diseñado para almacenar y transportar cantidades pequeñas y medianas de datos y se usa ampliamente para compartir información estructurada.
Python le permite analizar y modificar documentos XML. Para analizar un documento XML, es necesario tener todo el documento XML en la memoria. En este tutorial, veremos cómo podemos usar la clase minidom XML en Python para cargar y analizar archivos XML.
Cómo analizar XML usando minidom
Hemos creado un archivo XML de muestra que vamos a analizar.
Paso 1) Crear un archivo XML de muestra
Dentro del archivo podemos ver el nombre, apellido, domicilio y el área de especialización (SQL, Python, Pruebas y Negocios)
Paso 2) Utilice la función de análisis para cargar y analizar el archivo XML
Una vez analizado el documento, imprimiremos el "nombre del nodo" de la raíz del documento y el “nombre de etiqueta del primer hijo”. El nombre de etiqueta y el nombre de nodo son las propiedades estándar del archivo XML.
- Importe el módulo xml.dom.minidom y declare el archivo que debe analizarse (myxml.xml)
- Este archivo contiene información básica sobre un empleado, como nombre, apellido, domicilio, experiencia, etc.
- Usamos la función de análisis en el minidom XML para cargar y analizar el archivo XML.
- Tenemos la variable doc y doc obtiene el resultado de la función de análisis.
- Queremos imprimir el nombre de nodo y el nombre de etiqueta secundaria del archivo, por lo que lo declaramos en la función de impresión.
- Ejecute el código: imprime el nombre de nodo (#documento) del archivo XML y el nombre de la primera etiqueta secundaria (empleado) del archivo XML.
Nota :
El nombre de nodo y el nombre de etiqueta secundaria son los nombres o propiedades estándar de un dominio XML.
Paso 3) Llame a la lista de etiquetas XML del documento XML e imprímala
A continuación, también podemos recuperar la lista de etiquetas XML del documento XML e imprimirla. Aquí imprimimos el conjunto de habilidades como SQL, Python, Pruebas y negocios.
- Declarar la variable experiencia, de la cual vamos a extraer toda la experiencia que tiene el nombre del empleado.
- Utilice la función estándar dom llamada "getElementsByTagName"
- Esto obtendrá todos los elementos llamados habilidad.
- Declarar bucle sobre cada una de las etiquetas de habilidad.
- Ejecute el código: le dará una lista de cuatro habilidades.
Cómo escribir un nodo XML
Podemos crear un nuevo atributo utilizando la función "createElement" y luego agregar este nuevo atributo o etiqueta a las etiquetas XML existentes. Agregamos una nueva etiqueta "BigData" en nuestro archivo XML.
- Tienes que codificar para agregar el nuevo atributo (BigData) a la etiqueta XML existente.
- Luego, debe imprimir la etiqueta XML con nuevos atributos añadidos a la etiqueta XML existente.
- Para agregar un nuevo XML y agregarlo al documento, usamos el código “doc.create elements”
- Este código creará una nueva etiqueta de habilidad para nuestro nuevo atributo "Big-data"
- Agregue esta etiqueta de habilidad al documento del primer hijo (empleado)
- Ejecute el código: la nueva etiqueta "big data" aparecerá con la otra lista de experiencia.
Ejemplo de analizador XML
Python 2 Ejemplo
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 Ejemplo
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
Cómo analizar XML usando ElementTree
ElementTree es una API para manipular XML. ElementTree es la forma sencilla de procesar archivos XML.
Estamos utilizando el siguiente documento XML como datos de muestra:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Leyendo XML usando ElementTree:
Primero debemos importar el módulo xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Ahora busquemos el elemento raíz:
root = tree.getroot()
A continuación se muestra el código completo para leer los datos XML anteriores.
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
salida:
Expertise Data: SQL Python
Resum
Python le permite analizar todo el documento XML de una sola vez y no solo una línea a la vez. Para analizar un documento XML es necesario tener todo el documento en la memoria.
- Para analizar un documento XML
- Importar xml.dom.minidom
- Utilice la función "analizar" para analizar el documento (doc=xml.dom.minidom.parse (nombre de archivo);
- Llame a la lista de etiquetas XML del documento XML usando código (=doc.getElementsByTagName( “nombre de las etiquetas xml”)
- Para crear y agregar un nuevo atributo en un documento XML
- Utilice la función "createElement"