xml_parser_create()
Die Funktion xml_parser_create() ist eine integrierte PHP-Funktion, die eine neue XML-Parser-Ressource erstellt. Sie gehört zur legacy xml-Erweiterung und wird für SAX-ähnliches (ereignisgesteuertes) Parsing verwendet. Im Gegensatz zu modernen Erweiterungen wie SimpleXML oder DOMDocument verarbeitet dieser Parser XML-Daten sequenziell, indem er benutzerdefinierte Callback-Funktionen für Elemente, Attribute und Zeichendaten auslöst.
Die Funktion xml_parser_create() ist nützlich, wenn Sie große XML-Dateien streamweise parsen möchten, bestimmte Daten extrahieren müssen, ohne das gesamte Dokument in den Speicher zu laden, oder XML auf niedriger Ebene ereignisgesteuert verarbeiten möchten.
Syntax
Die Syntax der Funktion xml_parser_create() lautet wie folgt:
Syntax der Funktion xml_parser_create()
xml_parser_create([$encoding])Dabei steht $encoding für die von den XML-Daten verwendete Zeichenkodierung. Dieser Parameter ist optional.
Anwendungsbeispiele
Werfen wir einen Blick auf einige praktische Beispiele zur Verwendung von xml_parser_create() in PHP.
Beispiel 1: Erstellen eines XML-Parsers
Sie können die Funktion xml_parser_create() verwenden, um eine Parser-Ressource zu initialisieren. Beachten Sie, dass das Erstellen des Parsers allein keine Daten verarbeitet; Sie müssen Handler konfigurieren und xml_parse() aufrufen, um XML tatsächlich zu parsen.
Verwenden der Funktion xml_parser_create(), um in PHP einen neuen XML-Parser zu erstellen
$xml_parser = xml_parser_create();Dieser Code erstellt eine neue XML-Parser-Ressource. Für sich genommen ist er lediglich ein leerer Container, der zur Konfiguration bereitsteht.
Beispiel 2: Parsen von XML-Daten
Um XML tatsächlich zu parsen, müssen Sie Ereignis-Handler einrichten und dem Parser Daten mit xml_parse() zuführen.
Verwenden der Funktion xml_parser_create(), um in PHP XML-Daten zu parsen
$xml_parser = xml_parser_create();
$xml_data = file_get_contents("data.xml");
// Set up element handlers
xml_set_element_handler($xml_parser, function($parser, $name) {
echo "Start element: $name\n";
}, function($parser, $name) {
echo "End element: $name\n";
});
// Parse the data
if (!xml_parse($xml_parser, $xml_data, true)) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);Dieser Code erstellt einen Parser, registriert Callbacks für öffnende und schließende Tags und verwendet xml_parse(), um die XML-Datei zu verarbeiten. Der Parser löst die Callbacks aus, während er die Daten sequenziell liest.
Beispiel 3: Extrahieren von Daten aus XML
Sie können Zeichendaten-Handler verwenden, um Textinhalte aus bestimmten Tags während des Parsens zu erfassen.
Extrahieren von Daten aus XML mit der xml-Erweiterung in PHP
$xml_parser = xml_parser_create();
$xml_data = file_get_contents("data.xml");
$current_tag = '';
$extracted_title = '';
xml_set_element_handler($xml_parser, function($parser, $name) use (&$current_tag) {
$current_tag = $name;
}, function($parser, $name) use (&$current_tag) {
$current_tag = '';
});
xml_set_character_data_handler($xml_parser, function($parser, $data) use (&$current_tag, &$extracted_title) {
if ($current_tag === 'title') {
$extracted_title .= $data;
}
});
xml_parse($xml_parser, $xml_data);
echo "Extracted title: $extracted_title\n";
xml_parser_free($xml_parser);Dieser Code zeigt, wie Sie Textinhalte aus bestimmten Tags mit xml_set_character_data_handler() und xml_parse() erfassen. Beachten Sie, dass xml_parser_create() für ereignisgesteuertes Parsing ausgelegt ist und keine Schema-Validierung durchführt. Für die XSD-Validierung werden moderne Erweiterungen wie DOMDocument oder SimpleXML empfohlen.
Fazit
In diesem Artikel haben wir die PHP-Funktion xml_parser_create() und deren Verwendung zur Erstellung eines neuen SAX-ähnlichen XML-Parsers besprochen. Wir haben erläutert, was die Funktion tut, ihre Syntax vorgestellt und Beispiele zur Konfiguration von Handlern und zum sequenziellen Parsen von XML-Daten bereitgestellt. Durch Befolgen dieser Beispiele können Sie XML-Dateien effizient streamweise parsen und bestimmte Daten in Ihren PHP-Anwendungen extrahieren. Für die meisten modernen Anwendungsfälle sollten Sie SimpleXML oder DOMDocument in Betracht ziehen, die abstraktere APIs und integrierte Validierungen bieten, ohne dass eine manuelle Parser-Einrichtung erforderlich ist.
Praxis
Wie erstellen Sie einen XML-Parser in PHP korrekt?