La fonction "simplexml_load_file" permet de parser un document XML dans une structure PHP qui ressemble à des indexed arrays dans des indexed arrays. On peut donc facilement accéder à des éléments (avec des sélecteurs de type "array").
On peut aussi effectuer des recherches avec une expression XPath.
Du manuel: The SimpleXML extension provides a very simple and easily usable toolset to convert XML to an object that can be processed with normal property selectors and array iterators
Avantage : On peut très facilement intégrer une structure XML complète dans un programme PHP et ensuite la manipuler.
Désavantage :
Solution particulière à PHP, autrement dit ce type d'approche ne se retrouve pas dans d'autres langages de programmation (contrairement à DOM et SAX).
Le nom de l'élément racine disparaît dans la nature (!)
Note: En PHP 4.x une fonctionalité similaire était disponible sous le nom "xmltree")
Principe illustré avec un exemple:
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/simplexml0.php
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/ (répertoire)
('story.xml'); echo "Here is a dump of the data structure:"; echo "
"; print_r($xml); echo "
"; } else { exit('Failed to open story.xml.');}?> simplexml_load_file() charge un fichier XML
print_r() imprime une structure de données de façon "human-readable"
var_dump() imprime plus de détails "techniques".
Donc faites un "print_r" avant de se lancer dans programmation de l'extration des données qui vous intéressent !!
Exemple 4-2: Extraire des données avec SimpleXML
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/simplexml1.php
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/ (répertoire)
$xml = simplexml_load_file('story.xml'); echo "Here we just display some elements (i.e. and elements found in RECIT->FIL->EPISODE). can contain several "; $episodes = ($xml->FIL->EPISODE
); foreach ($episodes as $episode) {
echo "
"; $xml->FIL->EPISODE collectionne tous les eléments "EPISODE" filles de "FIL".
foreach ($episodes as $episode) ... est une technique standarde pour boucler sur tous les éléments d'un array. $episode sera lié à chaque item trouvé lors d'un passage.
$episode->SousBut extrait l'élément SousBut
Exemple 4-3: Extraire des données avec SimpleXML et Xpath
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/simplexml2.php
http://tecfa.unige.ch/guides/php/examples/simplexml-functions/ (répertoire)
Meme exemple que le précédant sauf qu'on utilise XPath pour extraire la liste des épisodes.
$xml = simplexml_load_file('story.xml'); $episodes = $xml->xpath('//EPISODE');
$xml->xpath('//EPISODE') collectionne tous les eléments "EPISODE" filles de "FIL".
foreach ($episodes as $episode) ... est une technique standarde pour boucler sur tous les éléments d'un array. $episode est un item.