Najlepszy samouczek Python3 analizowania XML W 2024 r. W tym samouczku możesz dowiedzieć się Czym jest XML?,Pythona do parsowania XML,python analizowania XML za pomocą SAX,metoda make_parser,metoda parser,metoda parseString,Python parsowania XML wystąpienie,Użyj xml.dom parse xml,
XML oznacza rozszerzalny język znaczników(e X tensible M arkup L anguage) podzbiorem SGML, to metoda znakowania dokumentu elektronicznego mieć uporządkowany język znaczników. Można nauczyć się za pośrednictwem tej strony XML Tutorial
XML został zaprojektowany do przesyłania i przechowywania danych.
XML to zestaw reguł do definiowania semantyki znaczników te tagi będą dokumencie podzielony na wiele części i te części, które należy zidentyfikować.
Jest to również metajęzyk znakowania, która definiuje składnię języka używanego do określenia innego, semantycznej strukturze języka znaczników specyficzne dla domeny.
Wspólna DOM i SAX interfejsy programowania XML, dwa różne interfejsy z plików XML tak, oczywiście, stosowanie różnych okazjach.
Istnieją trzy sposoby python parsowanie XML, SAX, DOM i ElementTree:
Biblioteka standardowa Pythona zawiera parser SAX SAX z modelem zdarzeniami, wywołany przez jedno zdarzenie w procesie analizowania XML i wywoływanie funkcji zwrotnych zdefiniowanych przez użytkownika do obsługi plików XML.
Dane XML jest analizowany pod drzewem w pamięci, działający za pośrednictwem drzewa manipulować XML.
Użyj tej sekcji do movies.xml instancji dokumentu XML brzmi następująco:
<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 to API zdarzeniami.
Wykorzystanie SAX parsowania dokumentu XML składa się z dwóch części: parsera i obsługi zdarzeń.
Parser jest odpowiedzialny za czytanie dokumentów XML i wysyła obsługi zdarzeń zdarzenia, takiego jak elementy zaczynają ze zdarzeniem końcowym elementem;
Moduł obsługi zdarzeń jest odpowiedzialny za Odpowiednio przypadku, transfer danych XML w celu przetworzenia.
Użyj sax sposób xml xml.sax po raz pierwszy wprowadzony w funkcji analizowania, jak również xml.sax.handler ContentHandler w Pythonie.
Metoda znaków (treść)
Harmonogram połączenia:
Od początku linii, przed wystąpieniem etykiety, istnieje wartość postaci, zawartość tych łańcuchów.
Z etykiety, etykietę przed następnego kontaktu, obecność postaci, stosunek zawartości tych łańcuchów.
Z etykietą przed napotkania terminatora linii, obecność znaków, wartości zawartości tych ciągów.
Znacznik może być na początku znacznika, może być koniec etykiety.
Metoda startDocument ()
Dokumentacja startowy o nazwie.
Metoda endDocument ()
Gdy wywołanie dotrze do końca parsera dokumentu.
(Nazwa, attrs) Metoda startElement
Zadzwoń napotkał znacznik początkowy XML, nazwa jest nazwą zmiennej, attrs jest słownikiem tag wartość nieruchomości.
Metoda endElement (nazwa)
Zaproszenie napotkał znacznik końcowy XML.
Poniższa metoda tworzy nowy obiekt parsera i powraca.
xml.sax.make_parser( [parser_list] )
Parametr Opis:
Poniższa metoda tworzy parser SAX i analizować dokument XML:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Parametr Opis:
parseString sposób tworzy parsera XML i analizować xml ciąg:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Parametr Opis:
#!/usr/bin/python3 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")
Powyższy kod jest wykonywany w następujący sposób:
*****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
Kompletna dokumentacja API SAX należy zapoznać się z Python SAX API
Document Object Model (Document Object Model, dalej DOM), jest to zabieg W3C zaleca Extensible Markup Language standardowy interfejs programowania.
W parsera DOM do analizowania dokumentu XML, przeczytać cały dokument na raz, wszystkie elementy dokumentu zapisanego w strukturze drzewa w pamięci, a następnie można użyć DOM, aby zapewnić różne funkcje do odczytu lub modyfikacji dokumentu zawartość i struktura zostać zmodyfikowane, aby zapisać zawartość pliku xml.
pyton z xml.dom.minidom analizować dokument XML przykłady są następujące:
#!/usr/bin/python3 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)
Wyniki powyższych procedur są następujące:
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
Kompletna dokumentacja API DOM patrz Python DOM API .