O melhor tutorial análise de XML Python em 2024. Neste tutorial você pode aprender O que é XML?,python para analisar XML,python parsing de XML usando SAX,método make_parser,método parser,método parseString,Python instância XML parsing,Use xml.dom parse xml,
XML significa Extensible Markup Language(e X tensible M arkup L anguage). Você pode aprender através deste site XML Tutorial
XML é projetado para transmitir e armazenar dados.
XML é um conjunto de regras para definir a semântica das marcas, estas tags irá documentar dividido em várias partes e estas peças a serem identificadas.
É também uma linguagem de meta-marcação que define a sintaxe da linguagem usada para definir outra, semântica, linguagem de marcação estruturada de domínio específico.
DOM comum e interfaces de programação XML SAX, duas interfaces de diferentes ficheiros XML com a forma, é claro, da utilização de diferentes ocasiões.
Há três maneiras XML python parsing, SAX, DOM, e ElementTree:
python biblioteca padrão contém parser SAX, SAX com o modelo orientado a eventos, desencadeada por um evento no processo de análise de XML e chamar funções de chamada de retorno definida pelo usuário para lidar com arquivos XML.
Os dados XML é analisado em uma árvore na memória, operando através da árvore para manipular XML.
ElementTree como um DOM leve, com uma API conveniente e amigável. disponibilidade do código, rápido e consumir menos memória.
Nota: Devido ao DOM precisa mapear dados XML em árvore da memória, um lento, o segundo é mais consumo de memória, SAX de streaming lê o arquivo XML mais rápido, ocupam menos memória, mas requer que o usuário implementar callback (manipulador ).
Use esta seção para um movies.xml XML documento de instância estipula o seguinte:
<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 é uma API orientada a eventos.
Use SAX análise de um documento XML envolve duas partes: o manipulador analisador e do evento.
O analisador é responsável por ler documentos XML, e envia os manipuladores de eventos de eventos, tais como elementos começam com o evento elemento final;
O manipulador de eventos é responsável pelo evento em conformidade, a transferência de dados XML para processamento.
Use sax xml.sax maneira xml introduzido pela primeira vez na função de análise, bem como a xml.sax.handler ContentHandler em python.
caracteres método (conteúdo)
O momento da chamada:
A partir do início da linha, antes de experimentar o rótulo, existe um valor de caracteres, o conteúdo destas cordas.
A partir de um rótulo, uma etiqueta antes do encontro seguinte, a presença do carácter, o valor do conteúdo destas cordas.
De uma etiqueta, antes de encontrar um terminador de linha, a presença de personagens, o valor do conteúdo dessas cordas.
A etiqueta pode ser o começo da etiqueta, que pode ser o fim da etiqueta.
startDocument () Método
inicialização de documentação chamado.
endDocument () Método
Quando a chamada chega ao fim do analisador documento.
startElement (nome, attrs) Método
Chamada marca de início XML encontrado, o nome é o nome da marca, attrs é um tag valor da propriedade dicionário.
endElement (nome) Método
Chamada encontrou tag end XML.
O método a seguir cria um novo objeto de analisador e retorna.
xml.sax.make_parser( [parser_list] )
Parâmetro Descrição:
O método a seguir cria um parser SAX e analisar documentos xml:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Parâmetro Descrição:
Método parseString cria um analisador XML e analisar cadeia xml:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Parâmetro Descrição:
#!/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")
O código acima é executado da seguinte forma:
*****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
documentação da API SAX completa consulte os SAX APIs Python
Document Object Model (Document Object Model, referidos como DOM), é um tratamento recomendado pelo W3C interface de programação padrão Extensible Markup Language.
Em um analisador DOM para analisar um documento XML, leia o documento inteiro de uma só vez, todos os elementos do documento salvo em uma estrutura de árvore na memória, em seguida, você pode usar o DOM para fornecer diferentes funções para ler ou modificar o documento conteúdo e estrutura a ser modificado para escrever o conteúdo do arquivo xml.
python com xml.dom.minidom para analisar documentos XML, os exemplos são os seguintes:
#!/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
Os resultados dos procedimentos acima são como se segue:
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
documentação da API DOM completa consulte o Python o APIs DOM .