xml_parser_create_ns()
La fonction xml_parser_create_ns() est une fonction intégrée de PHP qui crée un nouvel analyseur XML avec prise en charge des espaces de noms. Elle appartient à l'extension XML Parser et est utilisée lors de l'analyse de documents XML. Contrairement à SimpleXML, cette fonction fonctionne avec une API de type « pull » pilotée par des événements, ce qui vous permet de traiter efficacement les flux XML. Lorsque la prise en charge des espaces de noms est activée, l'analyseur résout automatiquement les préfixes d'espaces de noms et transmet des noms d'éléments structurés à vos gestionnaires, éliminant ainsi le besoin de résolution manuelle des préfixes.
Syntaxe
La syntaxe de la fonction xml_parser_create_ns() est la suivante :
Syntaxe de la fonction xml_parser_create_ns() en PHP
xml_parser_create_ns(?string $encoding = null, string $namespace_separator = '?')Où $encoding est l'encodage de caractères utilisé par les données XML (par exemple, 'UTF-8'), et $namespace_separator est le caractère utilisé pour joindre les URI d'espaces de noms aux noms locaux dans les rappels des gestionnaires (la valeur par défaut est ?). Les deux paramètres sont facultatifs.
Exemples d'utilisation
Examinons des exemples pratiques d'utilisation de xml_parser_create_ns() en PHP.
Exemple 1 : Création d'un analyseur XML
Pour créer un analyseur, appelez xml_parser_create_ns(). Cela retourne une ressource d'analyseur qui doit être configurée avec des gestionnaires d'éléments et de caractères avant l'analyse.
créer un nouvel analyseur XML avec prise en charge des espaces de noms
$parser = xml_parser_create_ns();
// Configure handlers and parse data...Ce code crée un nouvel analyseur avec le traitement des espaces de noms activé. La ressource d'analyseur est ensuite utilisée avec xml_set_element_handler() et xml_parse() pour traiter les données XML.
Exemple 2 : Analyse de données XML avec des préfixes d'espaces de noms
Lorsque la prise en charge des espaces de noms est activée, l'extension XML Parser résout automatiquement les préfixes d'espaces de noms. Les noms d'éléments transmis aux gestionnaires sont formatés sous la forme namespace_uri?local_name (en utilisant le séparateur par défaut). La résolution des espaces de noms est gérée par l'analyseur lui-même, et non manuellement.
analyser des données XML à l'aide de l'extension 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);Ce code crée un analyseur, définit des gestionnaires pour capturer les noms d'éléments et analyse la chaîne XML. Le nom d'élément ns:child est automatiquement résolu et transmis au gestionnaire sous la forme http://example.com?child.
Exemple 3 : Personnalisation de l'encodage de caractères et du séparateur
Par défaut, xml_parser_create_ns() suppose que les données XML utilisent l'encodage par défaut du système. Vous pouvez spécifier un encodage et un séparateur d'espace de noms personnalisé pour garantir un traitement correct des caractères et un formatage approprié des rappels.
personnaliser l'encodage et le séparateur pour un traitement correct des caractères
$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);Ce code crée un analyseur avec un encodage UTF-8 et un séparateur personnalisé |. La ressource d'analyseur est libérée après utilisation pour éviter les fuites de mémoire.
Pratique
Quelle sortie le code PHP fourni à l'URL liée produira-t-il ?