Zum Inhalt springen

xml_parser_create_ns()

Die Funktion xml_parser_create_ns() ist eine integrierte PHP-Funktion, die einen neuen XML-Parser mit Namespace-Unterstützung erstellt. Sie gehört zur XML Parser-Erweiterung und wird beim Parsen von XML-Dokumenten verwendet. Im Gegensatz zu SimpleXML arbeitet diese Funktion mit einer ereignisgesteuerten Pull-API, die eine effiziente Verarbeitung von XML-Streams ermöglicht. Wenn die Namespace-Unterstützung aktiviert ist, löst der Parser automatisch Namespace-Präfixe auf und übergibt strukturierte Elementnamen an Ihre Handler, wodurch manuelle Präfixauflösungen entfallen.

Syntax

Die Syntax der Funktion xml_parser_create_ns() lautet wie folgt:

Syntax der xml_parser_create_ns()-Funktion in PHP

php
xml_parser_create_ns(?string $encoding = null, string $namespace_separator = '?')

Dabei steht $encoding für die vom XML-Datenformat verwendete Zeichenkodierung (z. B. 'UTF-8'), und $namespace_separator ist das Zeichen, das verwendet wird, um Namespace-URIs mit lokalen Namen in Handler-Rückrufen zu verknüpfen (Standard ist ?). Beide Parameter sind optional.

Anwendungsbeispiele

Im Folgenden finden Sie praktische Beispiele zur Verwendung von xml_parser_create_ns() in PHP.

Beispiel 1: Erstellen eines XML-Parsers

Um einen Parser zu erstellen, rufen Sie xml_parser_create_ns() auf. Dies gibt eine Parser-Ressource zurück, die vor dem Parsen mit Element- und Zeichen-Handlern konfiguriert werden muss.

Erstellen Sie einen neuen XML-Parser mit Namespace-Unterstützung

php
$parser = xml_parser_create_ns();
// Konfigurieren Sie Handler und parsen Sie Daten...

Dieser Code erstellt einen neuen Parser mit aktivierter Namespace-Verarbeitung. Die Parser-Ressource wird anschließend mit xml_set_element_handler() und xml_parse() zur Verarbeitung von XML-Daten verwendet.

Beispiel 2: Parsen von XML-Daten mit Namespace-Präfixen

Wenn die Namespace-Unterstützung aktiviert ist, löst die XML Parser-Erweiterung automatisch Namespace-Präfixe auf. Elementnamen, die an Handler übergeben werden, sind im Format namespace_uri?local_name formatiert (unter Verwendung des Standardtrennzeichens). Die Namensraumauflösung wird vom Parser selbst und nicht manuell durchgeführt.

XML-Daten mit der XML Parser-Erweiterung parsen

php
$parser = xml_parser_create_ns();
$xml_data = '<?xml version="1.0"?><root xmlns:ns="http://example.com"><ns:child>value</ns:child></root>';

xml_set_element_handler($parser, function($parser, $name) {
    echo "Element: $name\n";
}, function($parser, $name) {
    echo "End Element: $name\n";
});

xml_parse($parser, $xml_data);
xml_parser_free($parser);

Dieser Code erstellt einen Parser, definiert Handler zum Erfassen von Elementnamen und parst den XML-String. Der Elementname ns:child wird automatisch aufgelöst und als http://example.com?child an den Handler übergeben.

Beispiel 3: Anpassen der Zeichenkodierung und des Trennzeichens

Standardmäßig geht xml_parser_create_ns() davon aus, dass die XML-Daten die Standardsystemkodierung verwenden. Sie können eine Kodierung und einen benutzerdefinierten Namespace-Trenner angeben, um eine korrekte Zeichenbehandlung und Callback-Formatierung sicherzustellen.

Kodierung und Trennzeichen für eine korrekte Zeichenbehandlung anpassen

php
$parser = xml_parser_create_ns('UTF-8', '|');
$xml_data = '<?xml version="1.0"?><root xmlns:ns="http://example.com"><ns:child>value</ns:child></root>';

xml_set_element_handler($parser, function($parser, $name) {
    echo "Element: $name\n";
}, null);

xml_parse($parser, $xml_data);
xml_parser_free($parser);

Dieser Code erstellt einen Parser mit UTF-8-Kodierung und einem benutzerdefinierten |-Trennzeichen. Die Parser-Ressource wird nach der Verwendung freigegeben, um Speicherlecks zu vermeiden.

Praxis

Welche Ausgabe erzeugt der PHP-Code, der unter der verlinkten URL bereitgestellt wird?

Finden Sie das nützlich?

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