Votre question

[XML] Problème pour accéder aux noeuds avec Xpath

Tags :
  • Standalone
  • Programmation
Dernière réponse : dans Programmation
10 Août 2010 23:57:13

Bonjour
Comme le décrit mon titre j'ai du mal à lire les valeurs des noeuds.
Voici ma structure du fichier XML:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <friendsList>
  3. <steamID64>xxxxxxxxxxx</steamID64>
  4. <steamID>
  5. <![CDATAxxxxxx></steamID>
  6. <friends>
  7. <friend>xxxxxxxxxx</friend>
  8. <friend>xxxxxxxxxx</friend>
  9. <friend>xxxxxxxxxx</friend>
  10. <friend>xxxxxxxxxx</friend>
  11. <friend>xxxxxxxxxx</friend>
  12. </friends>
  13. </friendsList>

Voici mon code php
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadXML('http://xxxxxxxxxxxxxxxxxxxxxxxxxx');
$xpath = new DOMXPath($doc);
$url = $xpath->query('//friendsList/friends/friend*')->item(0)->value();
J'ai une erreur
Fatal error: Call to a member function item() on a non-object in E:\wamp2\www\Steam Number One\index1.php on line 81
Pouvez vous m'aider s'il vous plait?

Autres pages sur : xml probleme acceder noeuds xpath

a c 232 L Programmation
11 Août 2010 09:25:47

Salut,

Pas sûr qu'il y ait besoin d'un * après friend.
m
0
l
11 Août 2010 11:49:45

Je l'ai enlevé mais j'ai toujours cette erreur:

Fatal error: Call to a member function value() on a non-object in E:\wamp2\www\Steam Number One\index1.php on line 117

Y'a t-il une autre méthode?
Cordialement
m
0
l
Contenus similaires
a c 232 L Programmation
11 Août 2010 13:53:55

Et bah déjà c'est pas la même erreur.
Vu que là, tu as l'air d'avoir ton item(0) qui est récupéré.
Fais un print_r de item(0) pour voir ?

Et il me semble que la fonction value() n'existe pas pour un DOMNode, ça serait plutôt la propriété nodeValue
m
0
l
11 Août 2010 14:01:35

J'ai fait ceci:
$url = $xpath->query('//friendsList/friends/friend*')->item(0)->value();
print_r(item(0));

Fatal error: Call to a member function item() on a non-object in E:\wamp2\www\Steam Number One\index1.php on line 118 :heink: 
m
0
l
a c 232 L Programmation
11 Août 2010 15:08:03

bah forcément:
- tu as une erreur avant, alors ça va pas exécuter ce qu'il y après
- quand je dis de faire un print_r de item(0), c'est le item(0) de ta requête, item(0) tout seul comme ça n'existe pas...
- tu as remis le * après friend

  1. echo "<pre>";
  2. print_r($xpath->query('//friendsList/friends/friend')->item(0));
  3. echo "</pre>";
m
0
l
11 Août 2010 15:21:46

  1. $doc = new DOMDocument();
  2. $doc->loadXML($page_friends);
  3. $xpath = new DOMXPath($doc);
  4. echo "<pre>";
  5. print_r($xpath->query('//friendsList/friends/friend')->item(0));
  6. echo "</pre>";

Donc j'ai une page blache, quand j'applique cette méthode.
Cordialement
m
0
l
a c 232 L Programmation
11 Août 2010 16:18:15

si tu remplaces ta requête xpath par '//friend', ça donne quoi ?
m
0
l
7 Septembre 2010 13:49:53

Salut Omar, j'avais trouvé la solution c'est d'enlever carrément item(0).
dans tous les cas merci de ton aide
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS