Naviguer dans un fichier xml
Résolu
Bonjour, je souhaiterai lister certaines informations d'un fichier xml sur une page php. Sauf que je ne vois pas comment naviguer dans cette arborescence...
Je ne vois vraiment pas comment faire...
<entry> <pays>France</pays> <regime>Regime_fr</regime> </entry> <entry> <pays>Espagne</pays> <regime>Regime_esp</regime> </entry> <entry> <pays>Allemagne</pays> <regime>Regime_all</regime> </entry> <entry> <pays>Italie</pays> <regime>Regime_ita</regime> </entry>
Je ne vois vraiment pas comment faire...
3 réponses
-
$xml = simplexml_load_file("tonfichierxml");
$entries = ($xml->entry);
foreach($entries as $entry)
{
echo $entry->pays;
echo $entry->regime;
} -
Tu peux utiliser DOM ou SimpleXMLElement (plus simple que DOM).
Je t'envoie sur le doc de PHP pour en savoir plus :
- http://fr.php.net/dom
- https://www.php.net/simplexml-
en fait avec dom j'arrive a récupérer les informations avec les attributs :
$dom = new DomDocument(); $dom->load('char.xml'); $liste = $dom->getElementsByTagName("pays"); foreach($liste as $pays){ echo $pays->nodeValue; if ($pays->hasAttribute("value")) {echo $pays->getAttribute("value");} echo "<BR />"; }
Mais comment lui faire dire que c'est le <pays> de <continent2> que je veux afficher uniquement ? -
<?php $dom = new DomDocument(); $dom->load('char.xml'); $continant2 = $dom->getElementsByTagName('continent2')->item(0); $liste = $continant2->getElementsByTagName("pays"); foreach($liste as $pays){ echo $pays->nodeValue; if ($pays->hasAttribute("value")) echo $pays->getAttribute("value"); echo "<br />"; } ?> -
-
getElementsByTagName retourne une liste de noeud (DOMNodeList), même s'il n'y a qu'une balise portant le nom "continent2". Pour récupérer la première (et la seule) balise dans la liste, il faut utiliser la méthode item() (0 = première balise, 1 = la seconde, ...).
Ensuite, en appelant $continant2->getElemetsByTagName, ça n'ira chercher que les noeud à l'intérieur de $continant2 (qui est la balise <continent2>). -
-
-
Merci, ca fonctionne bien !
J'ai un deuxieme souci de navigation pour identifier certaines balises :
<continent1> <pays value="8" /> <population value="999" /> </continent1> <continent2> <pays value="10" /> <population value="888" /> </continent2>
Comment afficher que les value du continent 2 ?