XML vers php aide

Répondre
jjmortibus
le 25/06/2010 à 23:32
jjmortibus
Bonjour,
j'ai mon fichier xml (flux.xml) :
<donnees>
<prevision>
<prev num="1">
<VILLE>"test"</VILLE>
<NEIGE>10</PNEIGE>
</prev>
<prev num="2">
<VILLE>"test2"</VILLE>
<NEIGE>15</PNEIGE>
</prev>
</prevision>
</donnees>


je voudrais récupérer par exemple toutes les donnée de <prev ayant l'attribut num = "1">
j'ai donc fait cela :
<?php

$doc = new DomDocument('1.0', 'ISO-8859-1');
$doc->load('flux.xml');
$xpath = new DomXPath($doc);
$query = $xpath->query('/donnees/prevision/prev[@num = "1"]');
if ($query->length > 0) {
for ($i=0; $i<$query->length; $i++) {
echo $query->item($i)->nodeValue."\n";
}
}
?>


Le problème est que cela m'affiche toutes les données à partir du noeud prev = 1 en vrac et j'aimerai pouvoir formater les données comme par exemple :

<? echo "valeur de VILLE"; ?> 
<? echo "valeur de NEIGE"; ?>


ainsi je pourrais mettre en forme les différentes valeurs.

si quelqu'un a une piste
merci
jluc
LA GLOBULE
le 26/06/2010 à 17:58
LA GLOBULE
item($i) est a priori un élément de type DOMElement, par conséquent, tu peux accéder au nom de l'élément xml via la propriété $tagName.

Donc un echo de $query->item($i)->tagName devrait fonctionner :)
jjmortibus
le 26/06/2010 à 18:15
jjmortibus
Merci de ton aide, j'ai donc fait ce que tu disais mais cela me donne la valeur le nom du noeud ou je me trouve donc mon echo me renvoie :
"prev" et je voudrais enfin j'essaye de réaliser un echo différent pour isoler "VILLE" "NEIGE"...
jluc
LA GLOBULE
le 26/06/2010 à 19:27
LA GLOBULE
Ah ben oui, vu que tu cibles les éléments 'prev'.

Bref, tu as aussi la méthode hasChildNodes et la proriété childNodes pour parcourir les sous éléments.

Tu trouveras un exemple sur cette page.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours