xml_parser_create_ns()
La funzione xml_parser_create_ns() è una funzione built-in di PHP che crea un nuovo parser XML con supporto ai namespace.
La funzione xml_parser_create_ns() è una funzione built-in di PHP che crea un nuovo parser XML con supporto ai namespace. Appartiene all'estensione XML Parser e viene utilizzata per analizzare documenti XML. A differenza di SimpleXML, questa funzione opera con un'API pull event-driven, che consente di elaborare flussi XML in modo efficiente. Quando il supporto ai namespace è abilitato, il parser risolve automaticamente i prefissi dei namespace e passa nomi di elementi strutturati ai gestori, eliminando la necessità di una risoluzione manuale dei prefissi.
Sintassi
La sintassi della funzione xml_parser_create_ns() è la seguente:
Sintassi della funzione xml_parser_create_ns() in PHP
xml_parser_create_ns(?string $encoding = null, string $namespace_separator = '?')Dove $encoding è la codifica dei caratteri utilizzata dai dati XML (ad es. 'UTF-8'), e $namespace_separator è il carattere usato per unire gli URI dei namespace con i nomi locali nei callback dei gestori (il valore predefinito è ?). Entrambi i parametri sono facoltativi.
Esempi di utilizzo
Vediamo alcuni esempi pratici di utilizzo di xml_parser_create_ns() in PHP.
Esempio 1: Creazione di un parser XML
Per creare un parser, chiamare xml_parser_create_ns(). Questa funzione restituisce una risorsa parser che deve essere configurata con gestori di elementi e caratteri prima dell'analisi.
creare un nuovo parser XML con supporto ai namespace
$parser = xml_parser_create_ns();
// Configure handlers and parse data...Questo codice crea un nuovo parser con l'elaborazione dei namespace abilitata. La risorsa parser viene poi utilizzata con xml_set_element_handler() e xml_parse() per elaborare i dati XML.
Esempio 2: Analisi dei dati XML con prefissi di namespace
Quando il supporto ai namespace è abilitato, l'estensione XML Parser risolve automaticamente i prefissi dei namespace. I nomi degli elementi passati ai gestori sono formattati come namespace_uri?nome_locale (usando il separatore predefinito). La risoluzione dei namespace viene gestita dal parser stesso, non manualmente.
analizzare dati XML utilizzando l'estensione XML Parser
$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);Questo codice crea un parser, definisce i gestori per acquisire i nomi degli elementi e analizza la stringa XML. Il nome dell'elemento ns:child viene risolto automaticamente e passato al gestore come http://example.com?child.
Esempio 3: Personalizzazione della codifica dei caratteri e del separatore
Per impostazione predefinita, xml_parser_create_ns() presuppone che i dati XML utilizzino la codifica predefinita del sistema. È possibile specificare una codifica e un separatore di namespace personalizzato per garantire una corretta gestione dei caratteri e la formattazione dei callback.
personalizzare la codifica e il separatore per una corretta gestione dei caratteri
$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);Questo codice crea un parser con codifica UTF-8 e un separatore | personalizzato. La risorsa parser viene liberata dopo l'uso per evitare perdite di memoria.