L'analyseur Expat intégré permet de traiter des documents XML en PHP.
XML est utilisé pour décrire les données, l'accent étant mis sur leur nature. Les fichiers XML décrivent la structure des données.
En XML, il n'y a pas de balises prédéfinies. Vous devez définir vos propres balises.
Pour en savoir plus sur XML, visitez notre didacticiel XML.
Pour lire et mettre à jour – créer et traiter – un document XML, vous avez besoin d'un analyseur XML.
Il existe deux types fondamentaux d'analyseurs XML :
Analyseur arborescent : cet analyseur convertit les documents XML en une structure arborescente. Il analyse l'intégralité du document et donne accès aux éléments de l'arborescence, tels que le modèle objet de document (DOM).
Analyseur basé sur les événements : traite un document XML comme une série d'événements. Lorsqu'un événement spécifique se produit, l'analyseur appelle une fonction pour le gérer.
L'analyseur Expat est un analyseur basé sur des événements.
Les analyseurs basés sur les événements se concentrent sur le contenu des documents XML plutôt que sur leur structure. Pour cette raison, les analyseurs basés sur des événements sont capables d'accéder aux données plus rapidement que les analyseurs basés sur des arborescences.
Veuillez consulter le fragment XML suivant :
<de>Jani</de>
L'analyseur basé sur les événements rapporte le XML ci-dessus sous la forme d'une séquence de trois événements :
Élément de départ : à partir de
Démarrer la section CDATA, valeur : Jani
Fermer l'élément : de
L'exemple XML ci-dessus contient du XML bien formé. Toutefois, cette instance n’est pas du XML valide, car aucune déclaration de type de document (DTD) ne lui est associée.
Cependant, cela ne fait aucune différence lors de l'utilisation de l'analyseur Expat. Expat est un analyseur qui ne vérifie pas la validité et ignore toute DTD.
En tant qu'analyseur XML non validé basé sur des événements, Expat est rapide et léger, ce qui le rend idéal pour les applications Web PHP.
Remarque : Le document XML doit être bien formé sinon Expat générera une erreur.
La fonction d'analyseur XML Expat fait partie intégrante du noyau PHP. Aucune installation n'est requise pour utiliser ces fonctions.
Le fichier XML suivant sera utilisé dans notre exemple :
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from><heading>Rappel</heading><body>Don ne m'oublie pas ce week-end !</body></note>
Nous devons initialiser l'analyseur XML en PHP, définir des gestionnaires pour différents événements XML, puis analyser le fichier XML.
<?php//Initialiser l'analyseur XML$parser=xml_parser_create();//Fonction à utiliser au début d'un élémentfonction start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Remarque --<br>"; break; echo "À: "; break; "HEADING": echo "Titre: "; break; case "BODY": echo "Message: "; } }//Fonction à utiliser à la fin d'un élémentfonction stop($parser,$element_name) { echo "<br> "; }//Fonction à utiliser lors de la recherche de données de caractère char($parser,$data) { echo $data; }//Spécifier l'élément handlerxml_set_element_handler($parser,"start","stop");//Spécifier les données handlerxml_set_character_data_handler($parser,"char");//Ouvrir le fichier XML$fp=fopen("test.xml","r");/ /Lire les données pendant ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) ou die (sprintf("Erreur XML : %s à la ligne %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); /Libérer l'analyseur XMLxml_parser_free($parser);?>
Le code ci-dessus affichera :
-- Remarque --À : ToveFrom : JaniHeading : ReminderMessage : Ne m'oubliez pas ce week-end !
Comment ça marche :
Initialisez l'analyseur XML via la fonction xml_parser_create()
Créer des fonctions qui fonctionnent avec différents gestionnaires d'événements
Ajoutez la fonction xml_set_element_handler() pour définir la fonction à exécuter lorsque l'analyseur rencontre les balises d'ouverture et de fermeture
Ajoutez la fonction xml_set_character_data_handler() pour définir la fonction à exécuter lorsque l'analyseur rencontre des données de caractères
Analyser le fichier "test.xml" via la fonction xml_parse()
En cas d'erreurs, ajoutez la fonction xml_error_string() pour convertir les erreurs XML en descriptions textuelles
Appelez la fonction xml_parser_free() pour libérer la mémoire allouée à la fonction xml_parser_create()
Pour en savoir plus sur la fonction PHP Expat, visitez notre manuel de référence PHP XML Parser.