lire fichier XML en javascript

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

lire fichier XML en javascript

Message le Ven Fév 09, 2007 17:20

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: Tout sélectionner
<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 !


cleden
WRInaute accro
WRInaute accro
 
Messages: 1192
Inscription: Lun Jan 06, 2003 22:17

Message le Sam Fév 10, 2007 11:34

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: Tout sélectionner
<?
   $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


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

Message le Sam Fév 10, 2007 12:46

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...


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

Message le Dim Fév 11, 2007 15:35

alors personne ne peut m'aider ? :? :(


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Dim Fév 11, 2007 20:39

regarde pê dans les frameworks Ajax ce qu'ils utilisent pour la lecture XML.


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

Message le Lun Fév 12, 2007 10:34

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:


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

Message le Lun Fév 12, 2007 16:52

en fait j'ai peur que le probleme (comme la verite) soit ailleurs !

j'ai donc toujours mon fichier XML :

Code: Tout sélectionner
<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: Tout sélectionner
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: Tout sélectionner
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

nikox
Nouveau WRInaute
 
Messages: 4
Inscription: Mer Mai 04, 2005 1:24

Message le Jeu Juin 14, 2007 13:47

Pierrot25 a écrit:
Code: Tout sélectionner
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: Tout sélectionner
docXML.childNodes(2).childNodes.length


mais
Code: Tout sélectionner
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.


Pierrot25
WRInaute impliqué
WRInaute impliqué
 
Messages: 446
Inscription: Jeu Mar 17, 2005 10:48

Message le Jeu Juin 14, 2007 13:51

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!!!


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités