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)
<< 1. Modifications de fichiers XML
2. Interopérabilité avec l'extension DOM
3. Codage des caractères
4. Les itérateurs SimpleXML : présentation, Iterator
5. Les itérateurs SimpleXML : RecursiveIterator. Conclusion

Les itérateurs SimpleXML
Pour conclure notre article, nous allons vous présenter une autre partie de PHP 5 : les itérateurs. Les itérateurs sont une notions qui dépasse le cadre de SimpleXML, mais qui s'y applique très bien. Ils fournissent une interface standard pour des opérations courantes en PHP : passer en revue tous les éléments d'une ressource. Cette ressource peut être une simple liste, comme une table SQL, des enregistrements LDAP ou un tableau, ou encore multidimensionnel, comme des tableaux imbriqués, un système de fichiers ou un fichier XML ; ce peut être une ressource avec un curseur (possibilité d'avancer ou de reculer la position de lecture, comme dans un fichier local), ou sans retour en arrière (cas d'un processus ou d'une socket). Voici un aperçu des différentes classes disponibles en PHP ou comme exemple de la bibliothèque SPL (cliquez sur l'image à droite pour l'afficher à taille lisible).

La classe SimpleXMLIterator se situe comme ceci dans la hiérarchie :

Il s'agit donc d'une classe qui peut être transmise à une boucle foreach (Iterator), et qui peut être récursive (RecursiveIterator).

Iterator

<?php
$xml =<<<EOF
<?xml version='1.0'?>
<!DOCTYPE sxe SYSTEM "notfound.dtd">
<xml id="elem1">
  <a>1</a>
  <a>2</a>
  <c>3</c>
</xml>
EOF;

$sxe = simplexml_load_string($xml, 'SimpleXMLIterator');

for ($sxe->rewind(); $sxe->valid(); $sxe->next()) {
  print $sxe->key()." : ".$sxe->current()."\n";
  }
?>


Voici comment passer en revue les différentes balises contenue dans la balise XML, pour en afficher le nom et le contenu. La boucle for() utilisée ici revient à cette boucle foreach() ;

foreach($sxe as $cle => $valeur) {
  print "$cle : $valeur\n";
  }


En interne, PHP transforme la boucle foreach ci-dessus en boucle for() et utilise les mêmes fonctions. Ici, la notation SimpleXML est plus facile à utiliser et lire que la notation Iterator.

  Forum

Réagissez dans les forums de JDN Développeurs

Dès que vous aurez des opérations plus complexes à faire sur le code XML qu'un simple foreach(), tout en passant en revue le document XML, balise après balise, SimpleXMLIterator sera une bonne solution : elle vous apporte une approche tableau, similaire aux fonctions de tableaux de PHP 5. Ainsi, les méthodes next() et key() font le même travail que les fonctions tableau next() et key(), et les méthodes rewind(), current() et valid() correspondent aux fonctionnalités de reset(), current() et end(). Votre ressource XML est donc assimilable un tableau à part entière.

<< 1. Modifications de fichiers XML
2. Interopérabilité avec l'extension DOM
3. Codage des caractères
4. Les itérateurs SimpleXML : présentation, Iterator
5. Les itérateurs SimpleXML : RecursiveIterator. Conclusion
 
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