Naviguer dans un fichier xml
Résolu
fxtaa
Messages postés
1050
Date d'inscription
Statut
Membre
Dernière intervention
-
fxtaa Messages postés 1050 Date d'inscription Statut Membre Dernière intervention -
fxtaa Messages postés 1050 Date d'inscription Statut Membre Dernière intervention -
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...
A voir également:
- Naviguer dans un fichier xml
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
$xml = simplexml_load_file("tonfichierxml");
$entries = ($xml->entry);
foreach($entries as $entry)
{
echo $entry->pays;
echo $entry->regime;
}
$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
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 :
Mais comment lui faire dire que c'est le <pays> de <continent2> que je veux afficher uniquement ?
$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>).
Ensuite, en appelant $continant2->getElemetsByTagName, ça n'ira chercher que les noeud à l'intérieur de $continant2 (qui est la balise <continent2>).