Python-XML-Parsing
Was ist XML?
XML steht für die Extensible Markup Language (eXtensible Markup Lxtensible Markup Language).XML-Tutorial
XML ist dafür ausgelegt, Daten zu übertragen und zu speichern.
XML ist eine Reihe von Regeln zur Definition von semantischem Markup, das ein Dokument in viele Teile unterteilt und diese Teile identifiziert.
Es ist auch eine Meta-Markup-Sprache, das heißt, eine syntaktische Sprache, die verwendet wird, um andere semantische, strukturierte Markup-Sprachen für bestimmte Fachgebiete zu definieren.
XML mit Python parsen
Gängige XML-Programmierschnittstellen sind DOM und SAX. Diese beiden Schnittstellen verarbeiten XML-Dateien unterschiedlich und werden natürlich in unterschiedlichen Situationen eingesetzt.
Python bietet drei Methoden zum Parsen von XML: SAX, DOM und ElementTree:
1.SAX (Simple API for XML )
Die Python-Standardbibliothek enthält einen SAX-Parser. SAX verwendet ein ereignisgesteuertes Modell, das XML-Dateien verarbeitet, indem während des XML-Parsings Ereignisse nacheinander ausgelöst und benutzerdefinierte Callback-Funktionen aufgerufen werden.
2.DOM(Document Object Model)
XML-Daten in einen Baum im Speicher parsen und das XML durch Manipulation des Baums bearbeiten.
3. ElementTree (Elementbaum)
ElementTree ist wie ein leichtgewichtiges DOM mit einer praktischen und benutzerfreundlichen API. Es bietet gute Code-Verwendbarkeit, hohe Geschwindigkeit und geringen Speicherverbrauch.
Hinweis:Da DOM XML-Daten auf einen Baum im Speicher abbilden muss, ist es relativ langsam und speicherintensiv. SAX liest XML-Dateien streamend, was schneller ist und weniger Speicher verwendet, aber es erfordert, dass Benutzer Callback-Funktionen (Handler) implementieren.
Der Inhalt der in diesem Kapitel verwendeten XML-Beispieldatei movies.xml ist wie folgt:
movies.xml
Python verwendet SAX zum Parsen von XML
SAX ist eine ereignisgesteuerte API.
Das Parsen von XML-Dokumenten mit SAX umfasst zwei Teile:ParserundEvent-Handler。
Der Parser ist dafür verantwortlich, das XML-Dokument zu lesen und Ereignisse an den Event-Handler zu senden, wie z. B. Element-Start- und Element-End-Ereignisse.
Der Event-Handler ist dafür verantwortlich, auf Ereignisse zu reagieren und die übergebenen XML-Daten zu verarbeiten.
- 1. Große Dateien verarbeiten;
- 2. Nur einen Teil des Dateiinhalts benötigen oder nur bestimmte Informationen aus der Datei benötigen.
- 3. Wenn Sie Ihr eigenes Objektmodell erstellen möchten.
Um XML mit SAX in Python zu verarbeiten, müssen Sie zuerst die Funktion parse aus xml.sax und ContentHandler aus xml.sax.handler importieren.
Einführung in die Methoden der Klasse ContentHandler
Methode characters(content)
Zeitpunkt des Aufrufs:
Vom Anfang der Zeile an, bevor ein Tag angetroffen wird, ist der Wert von content, falls Zeichen vorhanden sind, diese Zeichenketten.
Von einem Tag an, bevor das nächste Tag angetroffen wird, ist der Wert von content, falls Zeichen vorhanden sind, diese Zeichenketten.
Von einem Tag an, bevor das Zeilenende angetroffen wird, ist der Wert von content, falls Zeichen vorhanden sind, diese Zeichenketten.
Das Tag kann ein Start-Tag oder ein End-Tag sein.
Methode startDocument()
Wird aufgerufen, wenn das Dokument beginnt.
endDocument()-Methode
Wird aufgerufen, wenn der Parser das Ende des Dokuments erreicht.
startElement(name, attrs)-Methode
Wird aufgerufen, wenn ein XML-Start-Tag angetroffen wird. name ist der Tag-Name, und attrs ist ein Dictionary der Attributwerte des Tags.
endElement(name)-Methode
Wird aufgerufen, wenn ein XML-End-Tag angetroffen wird.
make_parser-Methode
Die folgende Methode erstellt ein neues Parser-Objekt und gibt es zurück.
xml.sax.make_parser( [parser_list] )
Parameter description:
- parser_list- Optionaler Parameter, Parserliste
parser-Methode
Die folgende Methode erstellt einen SAX-Parser und parst ein XML-Dokument:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Parameter description:
- xmlfile- XML-Dateiname
- contenthandler- Muss ein ContentHandler-Objekt sein
- errorhandler- Wenn dieser Parameter angegeben wird, muss errorhandler ein SAX-ErrorHandler-Objekt sein
parseString-Methode
Die parseString-Methode erstellt einen XML-Parser und parst eine XML-Zeichenfolge:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Parameter description:
- xmlstring- XML-Zeichenfolge
- contenthandler- Muss ein ContentHandler-Objekt sein
- errorhandler- Wenn dieser Parameter angegeben wird, muss errorhandler ein SAX-ErrorHandler-Objekt sein
Python-XML-Parsing-Beispiel
Beispiel
Das Ausführungsergebnis des obigen Codes ist wie folgt:
*****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
Bitte lesen Sie die vollständige SAX-API-DokumentationPython-SAX-APIs
XML mit xml.dom parsen
Das Document Object Model (DOM) ist eine vom W3C empfohlene Standard-Programmierschnittstelle zur Verarbeitung von Extensible Markup Language.
Wenn ein DOM-Parser ein XML-Dokument parst, liest er das gesamte Dokument auf einmal ein und speichert alle Elemente in einer Baumstruktur im Speicher. Danach können Sie die verschiedenen von DOM bereitgestellten Funktionen verwenden, um den Inhalt und die Struktur des Dokuments zu lesen oder zu ändern, und Sie können den geänderten Inhalt auch in eine XML-Datei schreiben.
In Python wird xml.dom.minidom zum Parsen von XML-Dateien verwendet. Ein Beispiel ist wie folgt:
Beispiel
Das Ausführungsergebnis des obigen Programms ist wie folgt:
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
Bitte beachten Sie die vollständige DOM-API-DokumentationPython DOM APIs。
Weitere Erweiterungen