Lire fichier XML en javascript

WRInaute occasionnel
Bonjour a tous

J'arrive pas a trouver ce que je veux sur internet alors je vous demande votre aide.

Voila, en admettant que j'aie un flux xml de la sorte :

Code:
<addresses>
    <address>
        <id>17800630.00</id>
        <description>E G Dodson &amp; Son Ltd 427 High Road London</description>
    </address>
    <address>
        <id>17800638.00</id>
        <description>Moloneys 429 High Road London NW10</description>
    </address>
    <address>
        <id>17800637.00</id>
        <description>New Golden 425 High Road London</description>
    </address>
[...]
</adresses>

Comment, EN JAVASCRIPT, je peux boucler sur les nœuds "address" et accéder à l'id et à la description ? J'ai trouvé plusieurs fonctions (getElementsByTagName("addresses"), firstChild.data, firstChild.text, firstChild.nodeValue, etc) sur internet mais je n'y arrive pas a faire ce que je veux...
Merci à celui qui pourra me mettre sur la bonne voie !
 
WRInaute impliqué
Salut,

J'ai fait un petit script, je ne sais pas si c'est exactement ce que tu cherches. Quelques lignes de JS suffisent à afficher le flux A CONDITION qu'un parser php existe quelque part: http://www.cap-sizun.com/cap,flux-rss.html

Et pour être plus précis, le parser javascript rss-js.php:
Code:
<?
   $flux = $_GET['flux'];
   $nb_items = $_GET['nb_items'];
   $file = fopen($flux,"r");
   if ($file) {
      while (!feof($file)) $raw .= fread($file,32000);
      fclose( $file );
      if(eregi("<item>(.*)</item>",$raw,$rawitems)){
         $items = explode("<item>", $rawitems[0]);
         $nb = count($items);
         $maximum = (($nb-1) < $nb_items) ? ($nb-1) : $nb_items;
         ob_start();
echo "document.write('<ul>');"."\n";
         for ($i=0;$i<$maximum;$i++) {
         eregi("<title>(.*)</title>",$items[$i+1], $title);
		 if ($_GET['desc']=="y"){eregi("<description>(.*)</description>",$items[$i+1], $descript);}
         eregi("<link>(.*)</link>",$items[$i+1], $link);
         eregi("<rm>(.*)</rm>",$items[$i+1], $rm);
         eregi("<enclosure url=\"(.*)\" length",$items[$i+1], $enclosure);
echo "document.write('<li><a href=\"".$link[1]."\">".addslashes($title[1])."</a></li>')";
		if  ($_GET['desc']=="y" && strlen($descript[1])>150){echo "document.write('<p>".addslashes(substr($descript[1], 0, 150))." <a href=\"".$link[1]."\">[...]</a></p>');"."\n";}
		elseif (strlen($descript[1])>5){echo "document.write('<p>".addslashes(substr($descript[1], 0, 150))."</p>');"."\n";}
		if  ($_GET['photos']=="y"){
		echo "document.write('<p><img src=\"".$enclosure[1]."\" /></p>');"."\n";
		}
		}
echo "document.write('</ul>');";
         $contenuCache = ob_get_contents();
         ob_end_flush();
      }
   }
?>

Loïc
 
WRInaute occasionnel
merci Loic mais ce que tu me donnes c'est du code PHP... je trouve pas le javascript

en fait j'en ai besoin pourpour afficher dans une page HTML (donc sans la recharger) des infos venant d'un flux XML generé par un script AJAX...

du coup, j'ai besoin de javascript pur...
 
WRInaute occasionnel
oui ben en fait c'est ce que je voulais eviter de faire parce que les frameworks sont difficiles a dechiffrer et comme je veux un truc relatviment simple... je pensais que quelqu'un avait deja eu ce pb. :roll:
 
WRInaute occasionnel
en fait j'ai peur que le probleme (comme la verite) soit ailleurs !

j'ai donc toujours mon fichier XML :

Code:
<addresses>
    <address>
        <id>17800630.00</id>
        <description>E G Dodson &amp; Son Ltd 427 High Road London NW10</description>
    </address>
    <address>
        <id>17800638.00</id>
        <description>Moloneys 429 High Road London NW10</description>
    </address>
    <address>
        <id>17800637.00</id>
        <description>New Golden Duck Restaurant 425 High Road London NW10</description>
    </address>
    <address>
        <id>17800640.00</id>
        <description>Schiavi Pole Brett Ltd 409 High Road London NW10</description>
    </address>
<addresses>

j'ai trouve des exemples javascript sur d'autres sites et voila le resultat
si je fais
Code:
docXML.childNodes.length
j'obtiens 1 avec FF et 0 sous IE (alors que dans l'exemple que j'ai je devrais visiblement trouver une valeur de 4 puisque j'ai 4 noeuds address )

autre PB, si je fais

Code:
docXML.childNodes(2).childNodes.length
FF et IE me disent : docXML.childNodes() is not a function !

je comprends pas, je l'invente pas, je l'ai vu sur plusieurs sites! pourquoi ca marche pas chez moi ?!

merci de m'aider, j'en ai marre de tourner en rond
 
Nouveau WRInaute
Pierrot25 a dit:
Code:
docXML.childNodes(2).childNodes.length
FF et IE me disent : docXML.childNodes() is not a function !

je comprends pas, je l'invente pas, je l'ai vu sur plusieurs sites! pourquoi ca marche pas chez moi ?!

je pense que c pas
Code:
docXML.childNodes(2).childNodes.length

mais
Code:
docXML.childNodes[2].childNodes.length

childNodes est en fait un tableau des éléments enfant que tu peux trouver en utilisant des indices numériques.
 
WRInaute occasionnel
merci. en fait je pense avoir essaye a l'époque, j'avais fini par m'en sortir mais j'ai passe qq heures sur ce problème!!!
 
Nouveau WRInaute
Salut

SVP j'ai le même problème que vous et je n'arrive pas à m'en sortir ( Lecture d'un fichier XML avec javascript )

Est ce que vous pouvez me fournir la solution que t'as trouvée ??

Un grand merci d'avance
 
Discussions similaires
Haut