Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2007, 17h29   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Par défaut [SimpleXML] Récupérer la position d'un nœud XML

Bonjour,

Je parcoure un fichier xml avec un "foreach" et j'affiche les informations souhaités, mais j'aimerais récupérer la position de chaque noeud trouvé.

Voici le code

Code :
1
2
3
4
5
6
7
8
9
 
 
$file_xml = simplexml_load_file ('file.xml');
 
foreach($file_xml->individu as $key=>$personne ){
 
echo $personne->age.' à la position '.$key.'<br> ';
 
}
Je sais que ca ne fonctionne pas, mais vous comprenez ce que je veux faire par $key, c-a-d récupérer la position de chaque noeud.

Merci
dorwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 18h26   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
1
2
3
4
5
6
$sxml = simplexml_load_file('file.xml');
 
$i = 0;
foreach ($sxml->individu as $personne) {
    echo $personne->age . ' à la position ' . $i++ . '<br /> ';
}
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 22h52   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Citation:
Envoyé par julp Voir le message
Code :
1
2
3
4
5
6
7
8
$sxml = simplexml_load_file('file.xml');
 
$i = 0;
foreach ($sxml->individu as $personne) {
 
 
   echo $personne->age . ' à la position ' . $i++ . '<br /> ';
}
Ca c'est utile quand je parcours le fichier xml sans que je fasse
de condition.

Admettons que j'ai le code suivant avec une condition:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
$age=32;
$i = 0;
foreach ($sxml->individu as $personne) {
 
  if ( $personne->age ==$age){
 
    echo $personne->age . ' à la position ' . $i++ . '<br /> ';
 }
 
}
Avec le compteur, ca ne me donne pas la position exacte du noeud qui contient l'age 32. Dans mon document, le nombre 32 se trouve à la position 0,4,6,9, alors que le "$i" me retourne 0,1,2,3.
dorwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 23h47   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il suffit de déplacer l'incrémentation :
Code :
1
2
3
4
5
6
7
8
$age=32;
$i = 0;
foreach ($sxml->individu as $personne) {
    if ($personne->age == $age) {
        echo $personne->age . ' à la position ' . $i . '<br /> ';
    }
    $i++;
}
Vous pouvez, suivant la structure du document, utiliser une expression XPath puisque le résultat vous est renvoyé sous la forme d'un tableau.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 00h58   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Citation:
Envoyé par julp Voir le message
Il suffit de déplacer l'incrémentation :
Code :
1
2
3
4
5
6
7
8
$age=32;
$i = 0;
foreach ($sxml->individu as $personne) {
    if ($personne->age == $age) {
        echo $personne->age . ' à la position ' . $i . '<br /> ';
    }
    $i++;
}
Vous pouvez, suivant la structure du document, utiliser une expression XPath puisque le résultat vous est renvoyé sous la forme d'un tableau.
Merci beaucoup Julp
dorwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h24.


 
 
 
 
Partenaires

Hébergement Web