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)

Cómo analizar XML usando minidom

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.

Analizar XML usando minidom

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

Analizar XML usando minidom

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

  1. Tienes que codificar para agregar el nuevo atributo (BigData) a la etiqueta XML existente.
  2. Luego, debe imprimir la etiqueta XML con nuevos atributos añadidos a la etiqueta XML existente.

Escribir nodo XML

  • 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"