Naviguer dans un fichier xml
Résolu
fxtaa
Messages postés
1170
Statut
Membre
-
fxtaa Messages postés 1170 Statut Membre -
fxtaa Messages postés 1170 Statut Membre -
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
- 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>).