PHP Analyseur XML Expat


L'analyseur XML Expat intégré permet de traiter des documents XML en PHP.


L'analyseur XML Expat

L'analyseur Expat est un analyseur basé sur des événements.

Regardez la fraction XML suivante :

<from>Jani</from>

Un analyseur basé sur des événements rapporte le XML ci-dessus sous la forme d'une série de trois événements :

  • Élément de début : from
  • Début de la section CDATA, valeur : Jani
  • Élément de fermeture : from

Les fonctions de l'analyseur XML Expat font partie du noyau PHP. Aucune installation n'est nécessaire pour utiliser ces fonctions.


Le fichier XML

Le fichier XML "note.xml" sera utilisé dans l'exemple ci-dessous :

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Rappel</heading>
<body>N'oubliez pas de penser à moi ce week-end !</body>
</note>


Initialiser l'analyseur XML Expat

Nous allons initialiser l'analyseur XML Expat en PHP, définir des gestionnaires pour différents événements XML, puis analyser le fichier XML.

Exemple

<?php
// Initialiser l'analyseur XML
$parser=xml_parser_create();

// Fonction à utiliser au début d'un élément
function start($parser,$element_name,$element_attrs) {
switch($element_name) {
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "À : ";
break;
case "FROM":
echo "De : ";
break;
case "HEADING":
echo "Titre : ";
break;
case "BODY":
echo "Message : ";
}
}

// Fonction à utiliser à la fin d'un élément
function stop($parser,$element_name) {
echo "<br>";
}

// Fonction à utiliser lors de la recherche de données de caractères
function char($parser,$data) {
echo $data;
}

// Spécifier le gestionnaire d'éléments
xml_set_element_handler($parser,"start","stop");

// Spécifier le gestionnaire de données
xml_set_character_data_handler($parser,"char");

// Ouvrir le fichier XML
$fp=fopen("note.xml","r");

// Lire les données
while ($data=fread($fp,4096)) {
xml_parse($parser,$data,feof($fp)) or
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 XML
xml_parser_free($parser);
?>
Exécuter l'exemple »

Exemple expliqué :

  1. Initialiser l'analyseur XML avec la xml_parser_create() fonction
  2. Créer des fonctions à utiliser avec les différents gestionnaires d'événements
  3. Ajouter la xml_set_element_handler() fonction pour spécifier quelle fonction sera exécutée lorsque l'analyseur rencontre les balises d'ouverture et de fermeture
  4. Ajouter la xml_set_character_data_handler() fonction pour spécifier quelle fonction sera exécutée lorsque l'analyseur rencontre des données de caractères
  5. Analyser le fichier "note.xml" avec la xml_parse() fonction
  6. En cas d'erreur, ajouter xml_error_string() fonction pour convertir une erreur XML en description textuelle
  7. Appeler la xml_parser_free() fonction pour libérer la mémoire allouée avec la xml_parser_create() fonction

Plus sur l'analyseur XML Expat PHP

Pour plus d'informations sur les fonctions Expat de PHP, visitez notre Référence de l'analyseur XML PHP .