Trouve la position de la dernière occurrence d'une sous- chaîne dans une chaîne
Pour lire et mettre à jour ou créer et manipuler un document XML, vous aurez besoin d'un analyseur XML.
Pour lire et mettre à jour ou créer et manipuler un document XML, vous aurez besoin d'un analyseur XML.
Il existe deux principaux types d'analyseurs XML :
L'analyseur Expert est un analyseur basé sur des événements.
Parseurs événementiels se concentrent sur le contenu des documents XML, pas leur structure. Pour cette raison, les parseurs événementiels peuvent accéder aux données plus rapidement que les analyseurs arborescente.
Regardez la fraction XML suivante :
<de>Carabde</de>
Un analyseur basé sur des événements rapporte le code XML ci-dessus comme une série de trois événements :
L'exemple XML ci-dessus contient du code XML bien formé. Toutefois, l'exemple n'est pas un code XML valide, parce qu'il n'y a aucune définition de Type de Document (DTD) qui lui est associé.
Mais, ça ne fait aucune différence lorsque vous utilisez l'analyseur Expert. Expert est un analyseur non validant et ignore toute DTD.
Comme Expert est un analyseur XML basé sur les événements, non validant, il est rapide et léger, et correspond parfaitement pour les applications web PHP.
Remarque : Les documents XML doivent être bien formés ou Expert générera une erreur.
Les fonctions du parseur XML Expert font partie de la base PHP. Aucune installation n’est nécessaire pour utiliser ces fonctions.
Le fichier XML ci-dessous sera utilisé dans notre exemple :
Exemple : 📋 Copier le code
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <pour>Gerywa</pour> <de>Carabde</de> <titre>Rappel</titre> <corps>N'oubliez pas notre rendez-vous ce week-end! </corps> </note>
Nous voulons initialiser l'analyseur XML en PHP, définissez certains gestionnaires pour différents événements XML et puis analysez le fichier XML.
Nous suivrons les étapes suivantes :
A - Initialiser l'analyseur XML en utilisant la méthode : xml_parser_create() et nous stockons le resultat dans la variable $analyse.Ce qui donne la ligne de code suivate :
$analyse=xml_parser_create();
B - Nous créons trois fonctions :
1- Une fonction à utiliser au début d'un élément je nomme debbut(), elle prend comme paramètres : notre variable $analyse le nom et l’attribut de l’élément. Ce qui donne le code suivant :
Exemple : 📋 Copier le code
function debut($analyse,$nom_element,$element_attributs) { switch($nom_element) { case "NOTE": echo "-- Note --<br>"; break; case "POUR": echo "Pour: "; break; case "DE": echo "De: "; break; case "TITRE": echo "Titre: "; break; case "CORPS": echo "Message: "; } }
2- Une fonction à utiliser à la fin d'un élément que je nomme stop(), elle prend comme paramètres la variable $analyse et le nom de l’élément ce qui donne le code suivant :
Exemple : 📋 Copier le code
function stop($analyse,$nom_element) { echo "<br>"; }
3- Et une fonction à utiliser lors de la recherche des données de type caractère ce qui donne le code suivant :
Exemple : 📋 Copier le code
function character($analyse,$data) { echo $data; }
C - En fin nous utiliserons des fonctions intégrées en PHP à savoir :
- Les fonction de manipulation de fichiers : fopen(), fread() et filesize() pour savoir plus sur ces fonctions voir notre tutorial sur la manipulation de fichiers en php .
- Les fonctions parser PHP XML : xml_set_element_handler(), xml_set_character_data_handler(), xml_parse() et xml_get_current_line_number(). Ces fonctions nous allons les étudier en détail dans les chapitre à venir dans ce tutorial.
Ce qui donne le code suivant :
Exemple : 📋 Copier le code
xml_set_element_handler($analyse,"debut","stop"); xml_set_character_data_handler($analyse,"character"); $file=fopen("test.xml","r"); while ($data=fread($file, filesize("test.xml"))) { xml_parse($analyse,$data,feof($file)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($analyse)), xml_get_current_line_number($analyse))); } xml_parser_free($analyse);
Si vous rassemblez tous ces bouts de code et que vous exécutez le code résultant vous aurez le résultat comme suit :
-- Note --
Pour: Gerywa
De: Carabde
Titre: Rappel
Message: N'oubliez pas notre rendez-vous ce week-end!
En résumé comment ça marche :
Initialiser l'analyseur XML avec la fonction xml_parser_create()
Créer des fonctions à utiliser avec les différents gestionnaires d'événements
Ajoutez la fonction xml_set_element_handler() pour spécifier la fonction qui sera exécutée lorsque l'analyseur rencontre les balises d'ouverture et les balises de fermeture
Ajoutez la fonction xml_set_character_data_handler() pour spécifier la fonction qui s'exécute lorsque l'analyseur rencontre des données de type caractère
Analyser le fichier « test.xml » avec la fonction xml_parse()
En cas d'erreur, ajoutez xml_error_string() fonction pour convertir une erreur XML en une description textuelle
Appelez la fonction xml_parser_free() pour libérer la mémoire allouée avec la fonction xml_parser_create().
sommaire | chapitre suivant |