Zum Inhalt springen

xml_set_default_handler()

⚠️ Veraltet: Diese Funktion ist seit PHP 8.0.0 veraltet. Die Expat XML Parser-Erweiterung gilt als veraltet. Für moderne PHP-Entwicklung wird empfohlen, stattdessen DOMDocument oder SimpleXML zu verwenden.

Die Funktion xml_set_default_handler() ist eine integrierte PHP-Funktion, die zur Expat XML Parser-Erweiterung gehört. Sie legt eine benutzerdefinierte Funktion als Standard-Handler für Zeichendaten fest, die nicht von xml_set_character_data_handler() erfasst werden. Dies ist nützlich, wenn Sie rohen XML-Textinhalt verarbeiten müssen, ohne einen spezifischen Zeichendaten-Handler zu definieren.

Syntax

Die Syntax der xml_set_default_handler()-Funktion lautet wie folgt:

php
xml_set_default_handler(resource $parser, callable $handler): bool

Wobei $parser die von xml_parser_create() erstellte XML-Parser-Ressource ist und $handler der Name der benutzerdefinierten Funktion, die die XML-Zeichendaten verarbeitet. Die Funktion gibt bei Erfolg true und bei einem Fehler false zurück.

Anwendungsbeispiele

Schauen wir uns ein praktisches Beispiel für die Verwendung von xml_set_default_handler() in PHP an.

Beispiel: Festlegen einer Standard-Handler-Funktion

Angenommen, Sie haben einen XML-String, den Sie mit dem Expat XML Parser parsen möchten. Sie können xml_parser_create() verwenden, um einen neuen Parser zu erstellen, einen Standard-Handler festzulegen und anschließend die Daten zu parsen:

Festlegen einer Standard-Handler-Funktion in PHP

php
function handle_default($parser, $data) {
    echo "Default handler received: " . trim($data) . "\n";
}

$xml_parser = xml_parser_create();
xml_set_default_handler($xml_parser, "handle_default");

$xml_data = "<root>Hello World</root>";
if (xml_parse($xml_parser, $xml_data, true) === false) {
    echo "Parse error: " . xml_error_string(xml_get_error_code($xml_parser)) . "\n";
}
xml_parser_free($xml_parser);

Dieser Code erstellt einen Expat-Parser mit xml_parser_create(). Anschließend wird die Funktion handle_default() festgelegt, um Zeichendaten aufzufangen, die nicht von xml_set_character_data_handler() verarbeitet werden. Die Funktion xml_parse() verarbeitet den XML-String und löst den Standard-Handler für den Textinhalt aus. Die hinzugefügte Fehlerüberprüfung nutzt xml_get_error_code() und xml_error_string(), um Parsing-Fehler abzufangen und anzuzeigen. Abschließend räumt xml_parser_free() die Parser-Ressource auf.

Fazit

In diesem Artikel haben wir die PHP-Funktion xml_set_default_handler() und deren Zusammenspiel mit der Expat XML Parser-Erweiterung besprochen. Wir haben die Syntax erläutert, ihre Rolle bei der Verarbeitung von Zeichendaten geklärt und ein vollständiges Beispiel mit Fehlerbehandlung bereitgestellt. Beachten Sie, dass die Expat-Erweiterung veraltet ist und seit PHP 8.0.0 als deprecated gilt. Durch die Verwendung von xml_set_default_handler() können Sie rohen XML-Textinhalt in Ihren PHP-Anwendungen effizient verarbeiten, wobei moderne Projekte jedoch DOMDocument oder SimpleXML bevorzugen sollten.

Praxis

Was bewirkt der XML-Standard-Handler in PHP?

Finden Sie das nützlich?

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