xml_set_unparsed_entity_decl_handler()
Die xml_set_unparsed_entity_decl_handler()-Funktion ist eine integrierte PHP-Funktion, die einen benutzerdefinierten Callback als Handler für nicht analysierte Entitätsdeklarationen in einem XML-Parser festlegt. Sie gehört zur XML Parser-Erweiterung und funktioniert ausschließlich mit dem SAX-Parser, nicht mit SimpleXML. Dieser Handler ist nützlich, wenn Sie nicht analysierte Entitäten (wie binäre Daten, z. B. Bilder oder PDFs, die in XML referenziert werden) verarbeiten müssen, ohne sie in den Speicher zu laden.
Syntax
Die Syntax der xml_set_unparsed_entity_decl_handler()-Funktion lautet wie folgt:
Syntax der Funktion xml_set_unparsed_entity_decl_handler() in PHP
xml_set_unparsed_entity_decl_handler($parser, $handler)Dabei ist $parser die XML-Parser-Ressource, auf der der Handler festgelegt wird, und $handler der Name der benutzerdefinierten Callback-Funktion, die die nicht analysierten Entitätsdeklarationen verarbeitet.
Anwendungsbeispiele
Werfen wir einen praktischen Blick auf die Verwendung von xml_set_unparsed_entity_decl_handler() in PHP.
Beispiel: Festlegen einer Handler-Funktion für Entitätsdeklarationen
Nehmen wir an, Sie verfügen über ein XML-Dokument, das eine Entitätsdeklaration enthält. Sie können die Funktion xml_parser_create() verwenden, um einen neuen SAX-Parser zu erstellen, den Handler mit xml_set_unparsed_entity_decl_handler() festzulegen und anschließend die XML-Daten zu parsen:
Festlegen einer Handler-Funktion für Entitätsdeklarationen in PHP
function handle_unparsed_entity($parser, $name, $base, $systemId, $publicId, $notationName) {
echo "Unparsed entity '$name' found: $systemId (notation: $notationName)\n";
}
$xml_parser = xml_parser_create();
xml_set_unparsed_entity_decl_handler($xml_parser, "handle_unparsed_entity");
$xml_data = '<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY logo SYSTEM "logo.png" NDATA png>
]>
<root/>';
xml_parse($xml_parser, $xml_data, true);
xml_parser_free($xml_parser);Dieser Code erstellt einen neuen SAX-Parser mit xml_parser_create(). Anschließend wird der Callback handle_unparsed_entity() registriert, um Entitätsdeklarationen zu verarbeiten. Wenn xml_parse() den XML-String verarbeitet, wird der Callback ausgeführt und gibt die Entitätsdetails aus. Sie können den Callback anpassen, um bestimmte Informationen zu extrahieren oder andere erforderliche Aktionen durchzuführen.
Fazit
In diesem Artikel haben wir die PHP-Funktion xml_set_unparsed_entity_decl_handler() und ihre Integration in den SAX-XML-Parser besprochen. Wir haben erläutert, was nicht analysierte Entitäten sind, die Syntax der Funktion überprüft und ein vollständiges, ausführbares Beispiel bereitgestellt. Durch die Verwendung dieses Handlers in Ihren PHP-Anwendungen können Sie Verweise auf Binärdaten in XML effizient verarbeiten, ohne sie in den Speicher zu laden.
Praxis
Welche Funktion hat die xml_set_unparsed_entity_decl_handler-Funktion in PHP?