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

Accès aux données XML
Une fois le fichier XML correctement lu, on retrouve la même syntaxe puissante qu'avec les outils de conversions XML vers des tableaux PHP. SimpleXML simplifie considérablement l'accès aux données en jouant sur sa nature de ressource PHP : elle est à la fois un tableau et un objet. La ressource retournée représente simplement la racine de notre document XML. Il ne reste plus qu'à accéder aux attributs et aux sous-balises.

Le contenu d'une balise est scindé en sous-balises. Le contenu de chaque balise est affecté à un membre de la balise parente, sous le même nom que la balise. Si plusieurs sous-balises ont le même nom, elles sont rangées en tableau, et indexées numériquement. C'est ce qui arrive à notre balise 'style' ici. Il y a deux balises styles, et l'objet $bibliotheque contient un membre appelé 'style', qui est un tableau. Nous pouvons le passer à l'instruction foreach(), et passer en revue toutes les balises 'style'.

Chaque balise 'style' contient deux balises distinctes : auteur et titre. Comme elles sont uniques dans chaque balise style, il suffit de les appeler par leur nom, et les données contenues ont été enregistrées comme valeur, sous forme de chaîne de caractères.

Accès aux attributs

Les attributs sont aussi décodés et placés dans un tableau particulier. C'est en fait la même variable que l'objet que l'on utilise pour accéder aux différentes sous-balises. Ainsi :
$style->livre nous renvoie la sous-balise livre de balise style.
$style['livre'] nous renverrait la valeur de l'attribut livre de la balise 'style', s'il existe.

SimpleXML utilise donc les deux notations simultanément : tableau et objet. C'est très pratique pour identifier rapidement les données que vous manipulez, et pour leur donner des espaces de noms distincts.

Pour être complet, SimpleXML dispose de deux méthodes qui retournent la liste complète des attributs et des sous-balises et de leurs valeurs respectives. Il s'agit des méthodes attributes() et children(). On les utilise comme ceci :

Liste des attributs
<?php
$string = <<<XML
<a>
  <foo attribut1="un" attribut2="deux">1</foo>
</a>
XML;
$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
  echo $a, '="', $b, "\"\n";
  }
?>


Ce script va afficher :
attribut1="un"
attribut2="deux"

Liste des sous-balises
<?php
$string = <<<XML
<a>
  <b>1</b>
  <b>2</b>
  <b>3</b>
  <b>4</b>
</a>
XML;
$xml = simplexml_load_string($string);
foreach($xml->children() as $a => $b) {
  echo $a, '="', $b, "\"\n";
  }
?>


Ce script va afficher :
b="1"
b="2"
b="3"
b="4"

<< 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