El mejor tutorial de Python análisis XML en 2024. En este tutorial podrás aprender ¿Qué es XML?,Pitón de análisis XML,Pitón de análisis XML usando SAX,método make_parser,método analizador,método parseString,Python instancia XML análisis sintáctico,Utilice xml.dom analizar XML,
XML significa Extensible Markup Language(e X extensible M arkup I dioma). Usted puede aprender a través de este sitio Tutorial XML
XML está diseñado para transmitir y almacenar datos.
XML es un conjunto de reglas para definir la semántica de etiquetas, estas etiquetas documentará divididos en muchas partes y estas partes que ser identificados.
También es un lenguaje de metamarcado que define la sintaxis del lenguaje utilizado para definir otra, semántica, lenguaje de marcado con estructura de dominio específico.
DOM XML común y la programación de interfaces SAX, dos interfaces diferentes con archivos XML cierto, por supuesto, el uso de diferentes ocasiones.
Hay tres maneras de pitón análisis XML, SAX, DOM y elementtree:
biblioteca estándar de Python contiene analizador SAX, SAX con el modelo orientado a eventos, provocada por un evento en el proceso de análisis sintáctico XML y llamar a funciones de devolución de llamada definidos por el usuario para manejar archivos XML.
Los datos XML se analiza en un árbol en la memoria, que opera a través del árbol de manipular XML.
Elementtree como DOM ligero, con un API conveniente y agradable. disponibilidad del código, rápido y consume menos memoria.
Nota: Debido a DOM necesite asignar datos XML en árbol de la memoria, una lenta, la segunda es más consumo de memoria, streaming de SAX lee el archivo XML más rápido, ocupan menos memoria, pero requiere que el usuario para implementar devolución de llamada (controlador de ).
Utilice esta sección para una movies.xml documento de instancia XML dice lo siguiente:
<collection shelf="New Arrivals"> <movie title="Enemy Behind"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>Talk about a US-Japan war</description> </movie> <movie title="Transformers"> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description> </movie> <movie title="Trigun"> <type>Anime, Action</type> <format>DVD</format> <episodes>4</episodes> <rating>PG</rating> <stars>10</stars> <description>Vash the Stampede!</description> </movie> <movie title="Ishtar"> <type>Comedy</type> <format>VHS</format> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom</description> </movie> </collection>
SAX es un API orientada a eventos.
Uso SAX analizar un documento XML consta de dos partes: el analizador y el controlador de eventos.
El analizador se encarga de leer los documentos XML, y envía los controladores de eventos de eventos, tales como elementos comienzan con el evento extremo del elemento;
El controlador de eventos es responsable para el evento en consecuencia, la transferencia de datos XML para su procesamiento.
Utilice el saxofón xml.sax forma xml introducido por primera vez en la función de análisis, así como la xml.sax.handler ContentHandler en Python.
personajes método (contenido)
El momento de la llamada:
Desde el principio de la línea, antes de experimentar la etiqueta, hay un valor de carácter, el contenido de estas cadenas.
De una etiqueta, una etiqueta antes de la siguiente encuentro, la presencia del carácter, el valor de contenido de estas cadenas.
De una etiqueta, antes de encontrarse con un final de línea, la presencia de personajes, el valor del contenido de estas cadenas.
Tag puede ser el comienzo de la etiqueta, puede ser el final de la etiqueta.
startDocument método ()
Documentación de inicio llamado.
endDocument método ()
Cuando la llamada llega al final del analizador documento.
startElement (, attrs nombre) método
Call etiqueta de apertura XML encontrado, el nombre es el nombre de la etiqueta, attrs es una etiqueta de valor de la propiedad diccionario.
endElement método (nombre)
Llamar encontró etiqueta final XML.
El siguiente método crea un nuevo objeto analizador y vuelve.
xml.sax.make_parser( [parser_list] )
Descripción de parámetros:
El siguiente método crea un analizador SAX y analizar el documento XML:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Descripción de parámetros:
parseString método crea un analizador XML y analizar la cadena de xml:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Descripción de parámetros:
#!/usr/bin/python # -*- coding: UTF-8 -*- import xml.sax class MovieHandler( xml.sax.ContentHandler ): def __init__(self): self.CurrentData = "" self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" # 元素开始事件处理 def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # 元素结束事件处理 def endElement(self, tag): if self.CurrentData == "type": print "Type:", self.type elif self.CurrentData == "format": print "Format:", self.format elif self.CurrentData == "year": print "Year:", self.year elif self.CurrentData == "rating": print "Rating:", self.rating elif self.CurrentData == "stars": print "Stars:", self.stars elif self.CurrentData == "description": print "Description:", self.description self.CurrentData = "" # 内容事件处理 def characters(self, content): if self.CurrentData == "type": self.type = content elif self.CurrentData == "format": self.format = content elif self.CurrentData == "year": self.year = content elif self.CurrentData == "rating": self.rating = content elif self.CurrentData == "stars": self.stars = content elif self.CurrentData == "description": self.description = content if ( __name__ == "__main__"): # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) # 重写 ContextHandler Handler = MovieHandler() parser.setContentHandler( Handler ) parser.parse("movies.xml")
El código de seguridad se ejecuta como sigue:
*****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
documentación de la API SAX completa por favor refiérase a los Python API SAX
Document Object Model (Document Object Model, conocido como DOM), que es un tratamiento recomendado por el W3C Lenguaje de Marcado Extensible interfaz de programación estándar.
En un analizador DOM para analizar un documento XML, lea todo el documento a la vez, todos los elementos del documento guardado en una estructura de árbol en la memoria, entonces puede utilizar el DOM para proporcionar diferentes funciones para leer o modificar el documento contenido y la estructura a ser modificados para escribir el contenido del archivo XML.
pitón con xml.dom.minidom para analizar el documento XML, los ejemplos son los siguientes:
#!/usr/bin/python # -*- coding: UTF-8 -*- from xml.dom.minidom import parse import xml.dom.minidom # 使用minidom解析器打开 XML 文档 DOMTree = xml.dom.minidom.parse("movies.xml") collection = DOMTree.documentElement if collection.hasAttribute("shelf"): print "Root element : %s" % collection.getAttribute("shelf") # 在集合中获取所有电影 movies = collection.getElementsByTagName("movie") # 打印每部电影的详细信息 for movie in movies: print "*****Movie*****" if movie.hasAttribute("title"): print "Title: %s" % movie.getAttribute("title") type = movie.getElementsByTagName('type')[0] print "Type: %s" % type.childNodes[0].data format = movie.getElementsByTagName('format')[0] print "Format: %s" % format.childNodes[0].data rating = movie.getElementsByTagName('rating')[0] print "Rating: %s" % rating.childNodes[0].data description = movie.getElementsByTagName('description')[0] print "Description: %s" % description.childNodes[0].data
Los resultados de los procedimientos anteriores son las siguientes:
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
documentación de la API DOM completa por favor refiérase a la Python API del DOM .