xml_parser_create_ns()
Die Funktion xml_parser_create_ns() ist eine in PHP integrierte Funktion, die einen neuen XML-Parser mit Namespace-Unterstützung erstellt.
Die Funktion xml_parser_create_ns() ist eine in PHP integrierte 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. Anders als 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 Namespace-Präfixe automatisch auf und übergibt strukturierte Elementnamen an Ihre Handler, wodurch die manuelle Präfixauflösung entfällt.
Syntax
Die Syntax der Funktion xml_parser_create_ns() lautet wie folgt:
Syntax der Funktion xml_parser_create_ns() in PHP
xml_parser_create_ns(?string $encoding = null, string $namespace_separator = '?')Dabei ist $encoding die Zeichenkodierung der XML-Daten (z. B. 'UTF-8'), und $namespace_separator ist das Zeichen, das in Handler-Callbacks zum Verbinden von Namespace-URIs mit lokalen Namen verwendet wird (Standard ist ?). Beide Parameter sind optional.
Verwendungsbeispiele
Sehen wir uns praktische Beispiele zur Verwendung von xml_parser_create_ns() in PHP an.
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 mit Element- und Zeichen-Handlern konfiguriert werden muss, bevor das Parsen beginnt.
Erstellen eines neuen XML-Parsers mit Namespace-Unterstützung
$parser = xml_parser_create_ns();
// Configure handlers and parse data...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 Namespace-Präfixe automatisch auf. Elementnamen, die an Handler übergeben werden, sind im Format namespace_uri?local_name formatiert (unter Verwendung des Standard-Trennzeichens). Die Namespace-Auflösung wird vom Parser selbst übernommen, nicht manuell.
Parsen von XML-Daten mithilfe der XML-Parser-Erweiterung
$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 dem Handler als http://example.com?child übergeben.
Beispiel 3: Anpassen der Zeichenkodierung und des Trennzeichens
Standardmäßig geht xml_parser_create_ns() davon aus, dass die XML-Daten die Standardkodierung des Systems verwenden. Sie können eine Kodierung und ein benutzerdefiniertes Namespace-Trennzeichen angeben, um eine korrekte Zeichenverarbeitung und Callback-Formatierung sicherzustellen.
Anpassen der Kodierung und des Trennzeichens für eine korrekte Zeichenverarbeitung
$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 verhindern.