Tutorial del analizador XML de Python: ejemplo de lectura de archivo xml (Minidom, ElementTree)

Tabla de contenido:

Anonim

¿Qué es XML?

XML son las siglas de eXtensible Markup Language. Fue diseñado para almacenar y transportar pequeñas y medianas cantidades de datos y se usa ampliamente para compartir información estructurada.

Python le permite analizar y modificar documentos XML. Para analizar un documento XML, debe tener todo el documento XML en la memoria. En este tutorial, veremos cómo podemos usar la clase XML minidom en Python para cargar y analizar un archivo XML.

En este tutorial, aprenderemos:

  • Cómo analizar XML usando minidom
  • Cómo crear un nodo XML
  • Cómo analizar XML usando ElementTree

Cómo analizar XML usando minidom

Hemos creado un archivo XML de muestra que vamos a analizar.

Paso 1) Dentro del archivo, podemos ver el nombre, apellido, casa y el área de especialización (SQL, Python, Testing y Business)

Paso 2) Una vez que hayamos analizado el documento, imprimiremos el "nombre de nodo" de la raíz del documento y el "nombre de etiqueta firstchild" . 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 el empleado como nombre, apellido, casa, 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 secundario 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 primer nombre de etiqueta secundario (empleado) del archivo XML

Nota :

El nombre de nodo y el nombre de etiqueta hijo son los nombres o propiedades estándar de un dominio XML. En caso de que no esté familiarizado con este tipo de convenciones de nomenclatura.

Paso 3) También podemos llamar a la lista de etiquetas XML del documento XML e imprimirla. Aquí imprimimos el conjunto de habilidades como SQL, Python, Testing y Business.

  • Declarar la pericia variable, de la cual vamos a extraer toda la pericia que el empleado tiene
  • 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 crear un nodo XML

Podemos crear un nuevo atributo usando 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. Tiene que codificar para agregar el nuevo atributo (BigData) a la etiqueta XML existente
  2. Luego, debe imprimir la etiqueta XML con los nuevos atributos adjuntos a la etiqueta XML existente.
  • Para agregar un nuevo XML y agregarlo al documento, usamos el código "doc.create elementos"
  • Este código creará una nueva etiqueta de habilidad para nuestro nuevo atributo "Big-data"
  • Agregue esta etiqueta de habilidad en el documento primer hijo (empleado)
  • Ejecute el código: aparecerá la nueva etiqueta "big data" con la otra lista de conocimientos

Ejemplo de analizador XML

Ejemplo de Python 2

importar xml.dom.minidomdef main ():# use la función parse () para cargar y analizar un archivo XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# imprime el nodo del documento y el nombre de la primera etiqueta secundariaimprimir doc.nodeNameimprimir doc.firstChild.tagName# obtener una lista de etiquetas XML del documento e imprimir cada unaexperiencia = doc.getElementsByTagName ("experiencia")imprimir "% d pericia:"% pericia.lengthpor habilidad en experiencia:print skill.getAttribute ("nombre")# crea una nueva etiqueta XML y agrégala al documentonewexpertise = doc.createElement ("experiencia")newexpertise.setAttribute ("nombre", "BigData")doc.firstChild.appendChild (nueva experiencia)imprimir " "experiencia = doc.getElementsByTagName ("experiencia")imprimir "% d pericia:"% pericia.lengthpor habilidad en experiencia:print skill.getAttribute ("nombre")if nombre == "__main__":principal();

Ejemplo de Python 3

importar xml.dom.minidomdef main ():# use la función parse () para cargar y analizar un archivo XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# imprime el nodo del documento y el nombre de la primera etiqueta secundariaprint (doc.nodeName)imprimir (doc.firstChild.tagName)# obtener una lista de etiquetas XML del documento e imprimir cada unaexperiencia = doc.getElementsByTagName ("experiencia")print ("% d expertise:"% expertise.length)por habilidad en experiencia:imprimir (skill.getAttribute ("nombre"))# crea una nueva etiqueta XML y agrégala al documentonewexpertise = doc.createElement ("experiencia")newexpertise.setAttribute ("nombre", "BigData")doc.firstChild.appendChild (nueva experiencia)imprimir (" ")experiencia = doc.getElementsByTagName ("experiencia")print ("% d expertise:"% expertise.length)por habilidad en experiencia:imprimir (skill.getAttribute ("nombre"))if __name__ == "__main__":principal();

Cómo analizar XML usando ElementTree

ElementTree es una API para manipular XML. ElementTree es la forma fácil de procesar archivos XML.

Estamos utilizando el siguiente documento XML como datos de muestra:

SQLPython

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 ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)
producción:
Expertise Data:SQLPython

Resumen:

Python le permite analizar todo el documento XML de una vez y no solo una línea a la vez. Para analizar un documento XML, debe tener todo el documento en la memoria.

  • Para analizar un documento XML
    • Importar xml.dom.minidom
    • Utilice la función "parse" para analizar el documento (doc = xml.dom.minidom.parse (nombre de archivo);
    • Llame a la lista de etiquetas XML del documento XML utilizando el 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"