Análisis de XML en Python
¿Qué es XML?
XML se refiere al Lenguaje de Marcado Extensible (eXtensible Markup Lxtensible Markup Language).Puedes aprender a través de este sitio web
Tutorial de XML
XML está diseñado para transmitir y almacenar datos.
XML es un conjunto de reglas que definen marcas semánticas; estas marcas dividen un documento en muchas partes y las identifican.
Análisis de XML en Python
El análisis de XML en Python
Las interfaces de programación XML más comunes son DOM y SAX. Estos dos interfaces manejan archivos XML de manera diferente y, por supuesto, también son diferentes en sus casos de uso.
1.SAX (simple API for XML )
Python tiene tres métodos para analizar XML: SAX, DOM y ElementTree:
2.DOM(Document Object Model)
La biblioteca estándar de Python incluye un analizador SAX. SAX utiliza un modelo controlado por eventos; durante el análisis de XML, dispara eventos uno a uno y llama a funciones de devolución de llamada definidas por el usuario para procesar el archivo XML.
3.ElementTree (árbol de elementos)
3. ElementTree (árbol de elementos)
ElementTree es como un DOM ligero, con una API conveniente y amigable. Tiene buena reutilización de código, es rápido y consume poca memoria.Nota:
Debido a que DOM necesita mapear los datos XML a un árbol en memoria, por un lado es más lento y por otro consume más memoria, mientras que SAX lee el archivo XML en flujo (streaming), es más rápido y usa menos memoria, pero requiere que el usuario implemente funciones de devolución de llamada (handler).
movies.xml
Python analiza XML usando SAX
Análisis de XML con SAX en Python
SAX es una API basada en eventos.Usar SAX para analizar documentos XML involucra dos partes:yAnalizador。
Manejador de eventos
El analizador se encarga de leer el documento XML y enviar eventos al manejador de eventos, como el evento de inicio de elemento y el evento de fin de elemento.
- El manejador de eventos es responsable de responder a los eventos y procesar los datos XML transmitidos.
- 1. Procesar archivos grandes;
- 2. Solo se necesita parte del contenido del archivo, o solo obtener información específica del archivo.
3. Cuando se desea construir su propio modelo de objetos.
Introducción a los métodos de la clase ContentHandler
Introducción a los métodos de la clase ContentHandler
Método characters(content)
Momento de la llamada:
Desde el inicio de la línea, antes de encontrar una etiqueta, si hay caracteres, el valor de content son esas cadenas.
Desde una etiqueta, antes de encontrar la siguiente etiqueta, si hay caracteres, el valor de content son esas cadenas.
Desde una etiqueta, antes de encontrar el fin de línea, si hay caracteres, el valor de content son esas cadenas.
La etiqueta puede ser una etiqueta de apertura o una etiqueta de cierre.
Método startDocument()
Se llama cuando el documento comienza.
Método endDocument()
Se llama cuando el analizador llega al final del documento.
Método startElement(name, attrs)
Se llama cuando se encuentra una etiqueta de apertura XML; name es el nombre de la etiqueta y attrs es el diccionario de valores de atributos de la etiqueta.
Método endElement(name)
Método make_parser
Método make_parser
xml.sax.make_parser( [parser_list] )
El siguiente método crea un nuevo objeto analizador y lo devuelve.
- parser_listDescripción de parámetros:
Método parser
Método parser
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
El siguiente método crea un analizador SAX y analiza un documento XML:
- xmlfileDescripción de parámetros:
- contenthandler- nombre del archivo XML
- errorhandler- debe ser un objeto ContentHandler
Método parseString
Método parseString
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
El método parseString crea un analizador XML y analiza una cadena XML:
- xmlstringDescripción de parámetros:
- contenthandler- cadena XML
- errorhandler- debe ser un objeto ContentHandler
Ejemplo de análisis de XML en Python
Ejemplo
# Sobrescribir ContextHandler
*****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Year: 1989 Rating: R Stars: 8 Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Stars: 10 Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Stars: 2 Description: Viewable boredom
El resultado de ejecutar el código anterior es el siguiente:Python SAX APIs
Análisis de XML con xml.dom
Análisis de XML con xml.dom
El Modelo de Objetos de Documento (Document Object Model, abreviado DOM) es la interfaz de programación estándar recomendada por la organización W3C para procesar XML (lenguaje de marcado extensible).
Un analizador DOM, al analizar un documento XML, lee todo el documento de una vez y guarda todos los elementos del documento en una estructura de árbol en memoria. Luego puede utilizar las diferentes funciones proporcionadas por DOM para leer o modificar el contenido y la estructura del documento, y también puede escribir el contenido modificado en un archivo XML.
Ejemplo
# Imprimir la información detallada de cada película
Root element : New Arrivals *****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Rating: PG Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Rating: R Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Description: Viewable boredom
El resultado de ejecutar el programa anterior es el siguiente:Python DOM APIs。
Consulte la documentación completa de la API DOM