Zum Inhalt springen

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()

php
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

php
$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

php
$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

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?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.