TUTORIEL PHP 
PHP5 : SimpleXML
SimpleXML est une des deux nouvelles extensions de PHP 5 consacrées à XML, et présente une approche du traitement des fichiers XML mettant en avant la simplicité d'utilisation. (22/09/2004)

(fourni par Direction PHP)

  1. Introduction
2. Analyse du code XML
3. Accès aux données XML et aux attributs
4. SimpleXML et XPath
5. Recherche de balise et gestion des espaces de noms


(Ceci est la première partie de ce tutoriel. Il est recommandé de lire la seconde partie.)

SimpleXML est une des deux nouvelles extensions de PHP 5 consacrées à XML. L'autre est DOM, qui a évolué de domxml. Contrairement à cette dernière, SimpleXML est une approche nouvelle du traitement des fichiers XML. Elle met en avant la simplicité d'utilisation.

Jusqu'à présent, pour accéder à des fichiers XML, il fallait choisir entre deux méthodes : les expressions régulières et l'extension xml. La première méthode était idéale pour créer rapidement des solutions à une situation donnée. Grâce à la fonction preg_match(), et en travaillant habilement ses expressions, on arrivait facilement à transformer un fichier XML en un tableau associatif organisé. Avec un peu d'habitude, on arrivait même à gérer les attributs.

Toutefois, cette solution devait rester très proche du fichier XML à traiter : dès que ce dernier changeait, il fallait adapter les expressions régulières. Quant à traiter certaines situations complexes, comme les balises imbriquées ou les CDATA, cela devenait le cauchemar. Mais pour une solution rapide et bien maîtrisée, cela se révélait redoutable.
D'un autre coté, il y avait l'extension xml, qui reposait sur la bibliothèque expat. Cette bibliothèque est bien plus compétente avec subtilités de XML, mais imposait la configuration de nombreux gestionnaires. Avant même de penser à utiliser cette bibliothèque, il fallait donc bien comprendre la documentation et XML, et le premier résultat n'arrivait qu'avec plusieurs heures de travail. On avait donc le choix entre la solution rapide et éphémère, et la solution lourde et robuste.

SimpleXML aborde justement le problème des fichiers XML simples. Prenez un fichier XML comme celui-ci :

<?xml version="1.0" encoding="utf-8"?>
<bibliotheque>
  <style id="roman">
    <livre>
      <titre>La fortune des Rougon</titre>
      <auteur>Emile Zola</auteur>
    </livre>
    <livre>
      <titre>Hernani</titre>
      <auteur>Victor Hugo</auteur>
    </livre>
  </style>
  <style id="fiction">
    <livre>
      <titre>Le seigneur des anneaux</titre>
      <auteur>J.R.R. Tolkien</auteur>
    </livre>
  </style>
</bibliotheque>


Le document est éminemment lisible par un humain ainsi que par une machine. Sa structure est claire et facile à comprendre, même sans DTD. Le fichier XML est stocké sous le nom de 'livres.xml'. Pour le traiter avec SimpleXML, il suffit de le charger avec ces quelques lignes.

<?php
$bibliotheque = simplexml_load_file('livres.xml');
foreach ($bibliotheque->style as $style) {
  print "\nType {$style['id']} <br />\n";
  foreach ($style->livre as $livre) {
    print "Titre : {$livre->titre} <br />\n";
    print "Auteur : {$livre->auteur} <br />\n";
    }
  }
?>


Il serait difficile de faire plus simple. La première ligne charge le contenu du fichier livres.xml, dans la ressource $bibliotheque. Le fichier est lu en entier, et le contenu XML est validé par la bibliothèque libxml2. Si le document n'est pas compatible XML, alors les erreurs d'analyse sont affichées dans la page, et $bibliothèque reçoit le booléen false.

Alternativement, SimpleXML vous propose la fonction simplexml_load_string(). Cette dernière fonctionne comme simple_load_file(), mais attend le contenu XML dans une chaîne de caractères. Le traitement appliqué est le même que dans le cas des fichiers. Ainsi, si vos données XML sont déjà en mémoire, il n'y a pas besoin de les écrire sur le disque pour les traiter. C'est le cas si vous avez obtenu ces données depuis une base de données, ou via une ressource réseau.

  1. Introduction
2. Analyse du code XML
3. Accès aux données XML et aux attributs
4. SimpleXML et XPath
5. Recherche de balise et gestion des espaces de noms
 
Rédaction JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages