Version complète: sur le forum Webmaster Hub : XML et xpath : demande de précisions
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > XML et ses dialectes
tom-tom
Bonjour à tous,


Pour réaliser un "tri" dans un code XML, on peut utiliser la méthode xpath :

CODE
<?php
$string = <<<XML
<a>
<b>
  <c>text</c>
  <c>stuff</c>
</b>
<d>
  <c>code</c>
</d>
</a>
XML;

$xml = new SimpleXMLElement($string);

/* On cherche <a><b><c> */
$result = $xml->xpath('/a/b/c');

while(list( , $node) = each($result)) {
    echo '/a/b/c: ',$node,"\n";
}

/* Les chemins relatifs fonctionnent aussi... */
$result = $xml->xpath('b/c');

while(list( , $node) = each($result)) {
    echo 'b/c: ',$node,"\n";
}
?>


J'aimerais, dans ce code, au lieu de mettre directement la portion de code XML, qu'on l'a récupère à partir d'un fichier distant (URL). J'ai essayé un $string = fopen ("http://www.domaine.com/fichier.xml"); mais rien de bien de convaincant. :/

Quelqu'un peut-il m'éclairer ?


Merci.
captain_torche
fopen ne fait qu'ouvrir une connexion vers un fichier.
Il faudrait faire un fread ensuite pour en récupérer le contenu.
Sinon, tu peux essayer un file_get_contents, mais c'est possible que selon ta configuration, ça ne fonctionne pas.
tom-tom
Merci pour cette réponse rapide et ces précieuses informations biggrin.gif

Dans mon cas, est-ce que ce code serait correct ?
CODE
<?php
$string = file_get_contents("http://www.carbeo.com/rss/moy_dpt.xml");
$xml = new SimpleXMLElement($string);

/* On cherche <item><title> */
$result = $xml->xpath('item/title');

while(list( , $node) = each($result)) {
    echo 'item/title :',$node,"\n";
}

?>
captain_torche
Essaye, tu verras bien wink.gif
tom-tom
CITATION(captain_torche @ mardi 14 octobre 2008 à 12:12) *
Essaye, tu verras bien wink.gif

J'avais bien essayé, mais ça marchait pas. J'ai peur que ça vienne de mon code, c'est pour cela que je voulais savoir s'il avait l'air correct. biggrin.gif À moins que ce soit mon hébergeur... :/
captain_torche
Si ça ne marche pas, tu dois avoir un message d'erreur, non ?
LeMulotNocturne
1) vérifie la valeur de $string en faisant un bête echo $string;
2) si $string est vide, cela provient probablement du fait que ton PHP interdit l'ouverture de flux distants (notamment http). Cela se règle dans ton fichier de conf PHP (quelle plate-forme au fait ?)
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.