xml_set_default_handler()
La funzione xml_set_default_handler() imposta una funzione definita dall'utente come gestore predefinito per un parser XML in PHP.
⚠️ Deprecata: Questa funzione è deprecata a partire da PHP 8.0.0. L'estensione Expat XML Parser è considerata legacy. Per lo sviluppo PHP moderno, si raccomanda di utilizzare
DOMDocumentoSimpleXML.
La funzione xml_set_default_handler() è una funzione integrata di PHP che appartiene all'estensione Expat XML Parser. Imposta una funzione definita dall'utente come gestore predefinito per i dati di carattere non catturati da xml_set_character_data_handler(). Questo è utile quando si ha bisogno di elaborare contenuto testuale XML grezzo senza definire uno specifico gestore per i dati di carattere.
Sintassi
La sintassi della funzione xml_set_default_handler() è la seguente:
xml_set_default_handler(resource $parser, callable $handler): boolDove $parser è la risorsa del parser XML creata da xml_parser_create(), e $handler è il nome della funzione definita dall'utente che gestirà i dati di carattere XML. La funzione restituisce true in caso di successo o false in caso di errore.
Esempi di utilizzo
Vediamo un esempio pratico dell'utilizzo di xml_set_default_handler() in PHP.
Esempio: Impostare una funzione gestore predefinita
Supponiamo di avere una stringa XML che si vuole analizzare con il parser Expat XML. È possibile utilizzare xml_parser_create() per creare un nuovo parser, impostare un gestore predefinito e quindi analizzare i dati:
Impostare una funzione gestore predefinita in 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);Questo codice crea un parser Expat tramite xml_parser_create(). Imposta quindi la funzione handle_default() per acquisire i dati di carattere non gestiti da xml_set_character_data_handler(). La funzione xml_parse() elabora la stringa XML, attivando il gestore predefinito per il contenuto testuale. Il controllo degli errori aggiunto utilizza xml_get_error_code() e xml_error_string() per rilevare e visualizzare eventuali errori di analisi. Infine, xml_parser_free() libera la risorsa del parser.
Conclusione
In questo articolo abbiamo discusso la funzione xml_set_default_handler() di PHP e il suo funzionamento con l'estensione Expat XML Parser. Abbiamo spiegato la sua sintassi, chiarito il suo ruolo nella gestione dei dati di carattere e fornito un esempio completo con gestione degli errori. Si noti che l'estensione Expat è legacy e deprecata a partire da PHP 8.0.0. Utilizzando xml_set_default_handler(), è possibile elaborare in modo efficiente il contenuto testuale XML grezzo nelle applicazioni PHP, anche se i progetti moderni dovrebbero preferire DOMDocument o SimpleXML.