PHP-XML-Expat-Parser
Empfohlene Kurse:
Der integrierte Expat-Parser ermöglicht es, XML-Dokumente in PHP zu verarbeiten.
Was ist XML?
In XML gibt es keine vordefinierten Tags. Sie müssen Ihre eigenen Tags definieren.
Wenn Sie mehr über XML erfahren möchten, besuchen Sie unsere XML Anleitung.
Was ist Expat?
Um ein XML-Dokument zu lesen und zu aktualisieren - zu erstellen und zu verarbeiten - benötigen Sie einen XML-Parser.
Es gibt zwei grundlegende Typen von XML-Parsern:
- Ein auf Baum basierender Parser: Dieser Parser wandelt ein XML-Dokument in eine Baumstruktur um. Er analysiert das gesamte Dokument und bietet eine API, um auf die Elemente im Baum zuzugreifen, z.B. das Document Object Model (DOM).
- Ein auf Ereignissen basierender Parser: Siehe XML-Dokument als eine Abfolge von Ereignissen. Wenn ein spezifisches Ereignis auftritt, ruft der Parser Funktionen auf, um es zu verarbeiten.
Expat-Parser ist ein auf Ereignissen basierender Parser.
Ein auf Ereignissen basierender Parser konzentriert sich auf den Inhalt des XML-Dokuments und nicht auf das Ergebnis. Daher kann ein auf Ereignissen basierender Parser schneller auf Daten zugreifen als ein auf Baum basierender Parser.
Sehen Sie sich den folgenden XML-Abschnitt an:
<from>John</from>
Ein auf Ereignissen basierender Parser meldet das obige XML als eine Abfolge von drei Ereignissen:
- Beginn des Elements: from
- Beginn des CDATA-Teils, Wert: John
- Schließende Elemente: from
Das obige XML-Beispiel enthält gut formatiertes XML. Dieser Beispiel ist jedoch ungültiges XML, da es keine zugehörige Dokumenttypdeklaration (DTD) hat und keine eingebettete DTD.
Allerdings macht das bei der Verwendung des Expat-Parsers keinen Unterschied. Expat ist ein Parser, der keine Gültigkeit überprüft und jede DTD ignoriert.
Als ein auf Ereignissen basierender, nicht validierender XML-Parser ist Expat schnell und leicht, sehr gut geeignet für PHP-Webanwendungen.
Anmerkung:Ein XML-Dokument muss korrekt formatiert sein, andernfalls erzeugt Expat Fehler.
Installation
Der XML Expat-Parser ist ein Bestandteil des PHP-Kerns. Diese Funktionen können ohne Installation verwendet werden.
XML-Datei
Wir verwenden in unserem Beispiel den folgenden XML-Datei:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Erinnerung</heading> <body>Denken Sie daran, die Besprechung nicht zu vergessen!</body> </note>
Initialisiere den XML-Parser
Wir müssen den XML-Parser in PHP initialisieren, verschiedene XML-Ereignisse definieren und dann diese XML-Datei analysieren.
Beispiel
<?php //Initialisiere den XML-Parser $parser=xml_parser_create(); //Funktion zum Verwenden am Anfang eines Elements function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Hinweis --<br />"; break; case "TO": echo "An: "; break; case "FROM": echo "Von: "; break; case "HEADING": echo "Überschrift: "; break; case "BODY": echo "Nachricht: "; } } //Funktion zum Verwenden am Ende eines Elements function stop($parser,$element_name) { echo "<br />"; } //Funktion zum Verwenden bei der Suche nach Zeichendaten function char($parser,$data) { echo $data; } //Elementhandler spezifizieren xml_set_element_handler($parser,"start","stop"); //Datenhandler spezifizieren xml_set_character_data_handler($parser,"char"); //XML-Datei öffnen $fp=fopen("test.xml","r"); //Daten lesen while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Fehler: %s in Zeile %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Freigeben des XML-Parsers xml_parser_free($parser); ?>
Ausgabe des obigen Codes:
-- Notiz -- An: George Von: John Überschrift: Erinnerung Nachricht: Vergiss das Treffen nicht!
Arbeitsweise Erklärung:
- Initialisieren Sie den XML-Parser mit der Funktion xml_parser_create()
- Erstellen Sie Funktionen, die mit verschiedenen Ereignisbehandlern zusammenarbeiten
- Fügen Sie die Funktion xml_set_element_handler() hinzu, um zu definieren, welche Funktion ausgeführt wird, wenn der Parser auf Anfangs- und Endtags trifft
- Fügen Sie die Funktion xml_set_character_data_handler() hinzu, um zu definieren, welche Funktion ausgeführt wird, wenn der Parser Zeichenデータ trifft
- Verwenden Sie die Funktion xml_parse(), um die Datei "test.xml" zu analysieren
- Falls es zu Fehlern kommt, fügen Sie die Funktion xml_error_string() hinzu, um XML-Fehler in Texterklärungen umzuwandeln
- Verwenden Sie die Funktion xml_parser_free(), um den Speicher freizugeben, der der Funktion xml_parser_create() zugewiesen wurde
Mehr Informationen über den PHP Expat Parser
Für mehr Informationen über die PHP Expat Funktion besuchen Sie bitte unser PHP XML Parser Referenzhandbuch.