[AJAX] Parsing d'un XML, lapin komprÿ ...

Parsing d'un XML, lapin komprÿ ... [AJAX] - HTML/CSS - Programmation

Marsh Posté le 13-12-2006 à 21:45:19    

'Swar
 
Je me mets doucement à l'AJAX, en tentant de faire un premier script qui récupèrerais dans une base de données contenant des commentaires de photos le dernier commentaire afin de l'afficher sur une page. Cependant, j'ai _un peu_ de mal pour faire le parser de XML en JavaScript ...
 
Tout d'abord, ma page PHP chargée de récupérer le dernier commentaire fonctionne bien, le XML renvoyé ressemble à ça :
 

<?xml version="1.0"?>
  <exemple>
    <commentaires>
      <table>commentaires</table>
      <nom>Cricri</nom>
      <date>1165841476</date>
      <photo>d10.diapo_bouffe_cricri19</photo>
      <comment>C'est un peu ?a sauf que c'est l'inverse</comment>
    </commentaires>
  </exemple>


 
Yeehaa. Voici le code de la fonction de parsing :
 

Code :
  1. function test01IsBack()
  2. {
  3.     if (_xmlHttp.readyState==4)
  4.     {
  5.      var docXML= _xmlHttp.responseXML.documentElement;
  6.      alert(_xmlHttp.responseText);
  7. var comroot = docXML.getElementsByTagName("commentaires" )[0];
  8. alert(comroot.length);
  9. var nameNode = comroot.getElementsByTagName("nom" )[0];
  10. var name = comroot.childNode[0].nodeValue;
  11. alert(name);
  12. //     document.getElementById("test" ).innerHTML=_xmlHttp.responseText;
  13. //     var lenom = docXML.getElementsByTagName("table" );
  14. //      var latable = docXML.getElementsByTagName("table" );
  15.     
  16.      alert ("test" );
  17. //      alert (lenom);
  18. //      alert (table);
  19.     }
  20. }


 
Alors. Sous IE ou Firefox, le premier "alert" m'affiche bien le XML reçu. Ensuite, IE me rapporte une erreur sur la ligne suivante : "'null' a la valeur Null (ah bon ? [:a_bon]) ou n'est pas un objet" et s'arrête. Côté Firefox, cette ligne passe, puis le second "alert" (donc, selon moi, le nombre d'enfants de <commentaires> ) me donne "11" (?!). Pour les 2, le reste n'est pas exécuté. J'ai fait quoi qui va pas ? Ca fait 2 jours que je suis dessus, chaque page Google me donne une manière différente de faire, je sais plus quoi faire, je vous en prie, HFR, vous êtes mon seul espoir ... :cry:
 
A+

Reply

Marsh Posté le 13-12-2006 à 21:45:19   

Reply

Marsh Posté le 14-12-2006 à 07:30:51    

ben up, quoi :/

Reply

Marsh Posté le 14-12-2006 à 08:29:42    

pourquoi tu fais docXML= _xmlHttp.responseXML.documentElement;?  
 
moi je fais docXML= _xmlHttp.responseXML;

Reply

Marsh Posté le 14-12-2006 à 08:46:06    

nan y'a confondage surtout...
 
le responseXML c'est pas un objet DOM tu peux donc pas taper dedans comme ça!!!
Il faut que tu construises un objet à partir du flux reçu, et là biensur ça se complique car FF et IE divergent (:o) sur la syntaxe.
Pour IE il faut faire:

Code :
  1. docXML = new ActiveXObject("Microsoft.XMLDOM" );
  2. docXML.loadXML(xmlString);


et pour gecko

Code :
  1. docXML = document.implementation.createDocument('', rootNodeName, null);
  2. docXML = (new DOMParser()).parseFromString(xmlString,"text/xml" );


Et tu as bien remarqué que "implementation" necessite un rootNode en plus alors que XMLDOM non :)

Reply

Marsh Posté le 15-12-2006 à 12:57:11    

anapajari a écrit :

nan y'a confondage surtout...
 
le responseXML c'est pas un objet DOM tu peux donc pas taper dedans comme ça!!!
Il faut que tu construises un objet à partir du flux reçu, et là biensur ça se complique car FF et IE divergent (:o) sur la syntaxe.
Pour IE il faut faire:

Code :
  1. docXML = new ActiveXObject("Microsoft.XMLDOM" );
  2. docXML.loadXML(xmlString);


et pour gecko

Code :
  1. docXML = document.implementation.createDocument('', rootNodeName, null);
  2. docXML = (new DOMParser()).parseFromString(xmlString,"text/xml" );


Et tu as bien remarqué que "implementation" necessite un rootNode en plus alors que XMLDOM non :)


 
certes :jap:
 
mais ce que je ne comprend pas, c'est comment un script comme le III-a de cette page peut fonctionner, car il ne met pas en oeuvre d'objet DOM ?!

Reply

Marsh Posté le 15-12-2006 à 13:26:54    

euh alors en fait :o j'ai raconté nawak j'étais à l'ouet et je parlais de responseText vu que c'était ce qu'il y avait dans ton 1er post.
xmlResponse renvoie bien un objet XML utilisable directement via le DOM .

Reply

Marsh Posté le 15-12-2006 à 20:29:54    

donc, problème non résolu :'(
 
des idées, les gens ?

Reply

Marsh Posté le 17-12-2006 à 14:38:34    

up :(

Reply

Marsh Posté le 17-12-2006 à 20:33:04    

tu as testé ce que je t'ai dis ?

Reply

Marsh Posté le 17-12-2006 à 21:16:41    

flo850 a écrit :

tu as testé ce que je t'ai dis ?


 
désolé, j'avais pas vu ta réponse :/
 
Si je retire le "documentElement", IE m'affiche le premier alert, puis me donne une erreur à la ligne du second alert : "Objet requis".

Reply

Marsh Posté le 17-12-2006 à 21:16:41   

Reply

Marsh Posté le 17-12-2006 à 21:35:36    

  • responseXML est un document XML, utiliser documentElement n'a pas d'intérêt
  • Vérifier qu'il n'y a pas eu d'erreur de parsing de ton XML par contre, si tu affiches le responseXML.firstChild et que ça te dit "parseerror" (sous Firefox en tout cas) c'est que ton XML était mal formé et n'a pas pu être parsé
  • Accessoirement je vois pas trop comment tu peux trouver la longueur d'une node XML, ça a pas vraiment de sens [:dawa]
  • childNodes prend un S, parce qu'il y en a plusieurs, de nodes enfant, la pluspart du temps
  • anapajari est un gros mauvais :o

Message cité 2 fois
Message édité par masklinn le 17-12-2006 à 21:36:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2006 à 21:43:46    

masklinn a écrit :

  • responseXML est un document XML, utiliser documentElement n'a pas d'intérêt
  • Vérifier qu'il n'y a pas eu d'erreur de parsing de ton XML par contre, si tu affiches le responseXML.firstChild et que ça te dit "parseerror" (sous Firefox en tout cas) c'est que ton XML était mal formé et n'a pas pu être parsé
  • Accessoirement je vois pas trop comment tu peux trouver la longueur d'une node XML, ça a pas vraiment de sens [:dawa]
  • childNodes prend un S, parce qu'il y en a plusieurs, de nodes enfant, la pluspart du temps
  • anapajari est un gros mauvais :o


  • ah d'accord
  • Firefox m'affiche "[object Element]" à l'affichage de responseXML.firstChild, donc pas de parse error à priori.
  • je débute, je patauge un peu dans ce concept de nodes, de chlid, etc. ...
  • certes [:prodigy] du coup, IE m'indique "'null' a la valeur Null ou n'est pas un objet" pour la ligne :

var nameNode = comroot.getElementsByTagName("nom" )[0];


  • je retiens :jap: :D


Message édité par MossieurPropre le 17-12-2006 à 21:45:05
Reply

Marsh Posté le 17-12-2006 à 21:58:59    

Sous firefox, tu devrais installer et apprendre à utiliser Firebug, j'pense que ça t'aiderait pas mal.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2006 à 22:00:05    

merci bien, je vais regarder ça de plus près :jap:

Reply

Marsh Posté le 17-12-2006 à 22:04:29    

Pour le moment, tu devrais commencer par Logging, c'est l'une des fondations de Firebug et l'une de ses grandes forces.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2006 à 22:21:24    

ça m'a l'air vachement bien foutu comme truc, je pense que ça devrait m'aider. Je reviendrais poster mes résultats, ça pourrait servir à d'autres :jap:

Reply

Marsh Posté le 18-12-2006 à 09:30:57    

masklinn a écrit :

  • anapajari est un gros mauvais :o

[:grinking]  disons que sur ce coup là, j'ai bien raconté nawak  

Reply

Marsh Posté le 19-12-2006 à 20:13:01    

C'est la guerre des Titans, ici...
 
Par hasard, moi aussi je tente de mettre un place un parcing d'un XML par JavaScript  :pt1cable:  :pt1cable:
 
C'est un bazard, je vous en épargne... Je suis débutant...
Mais currieusement, j'ai découvert sur net quelque chose, qui pour une fois marche dans Safari et pas ailleurs ! Il est ici :
http://www.aliasdmc.fr/coursjavas/ [...] pt166.html
Puis ici, il ya quelque chose qui a l'air d'être claire et simple, mais je n'ai pas réussi de le faire marcher sur aucun exporateur sur Mac :
http://www.ccim.be/ccim328/xml/xsl_javascript.html
 
Peut-être il ne manque à chaque fois qu'un petit quelque chose ?
 
J'ai une idée : quelqu'un serait capable de publier un petit ensemble html - javascript - xml qui marcherait de partout ? Le premier qui réussi aura la récompense de... On pourrait se cotiser  :whistle:
 
Si non, au moins, ça vous inspire de commentaires ? (Ces deux exemples...)
 
A++

Reply

Marsh Posté le 19-12-2006 à 22:16:49    

moi, je comprends plus ...
 
Voici un bout de mon code, en fait les premières lignes de ma fonction de parsing du XML :
 

if (_xmlHttp.readyState==4 && _xmlHttp.status == 200)  
{
    var docXML = _xmlHttp.responseXML;
    alert(docXML.childNodes.length);


 
Et là, Firefox, Safari me donnent "1" pour l'alert, le script continue donc et fonctionne bien ; alors que IE me donne "0" et ne va pas plus loin ...
 
Pour rappel, voici le XML généré :
 

<exemple>
   <commentaires>
      <table>commentaires</table>
      <nom>Cricri</nom>
      <date>1165841476</date>
      <photo>d10.diapo_bouffe_cricri19</photo>
      <comment>C'est un peu ça sauf que c'est l'inverse</comment>
   </commentaires>
</exemple>


 
Bien évidemment, dans mon fichier PHP chargé de le générer, on trouve ceci :
 

header('Content-Type: text/xml');


 
Le problème ne venant donc pas d'un type MIME erroné. Mais d'où, alors ?


Message édité par MossieurPropre le 19-12-2006 à 22:18:12
Reply

Marsh Posté le 20-12-2006 à 09:28:17    

up du mercredi matin ?

Reply

Marsh Posté le 20-12-2006 à 09:32:20    

ajax c'est toujours la merde à debugger :o
Donc juste avec ce que tu as donné ça va pas être facile!
Sur IE tu es sur d'avoir un retour ? ou même d'avoir bien effectué ton appel?

Reply

Marsh Posté le 20-12-2006 à 09:37:55    

anapajari a écrit :

ajax c'est toujours la merde à debugger :o


 [:moundir]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-12-2006 à 09:43:57    

anapajari a écrit :

ajax c'est toujours la merde à debugger :o
Donc juste avec ce que tu as donné ça va pas être facile!
Sur IE tu es sur d'avoir un retour ? ou même d'avoir bien effectué ton appel?


 

alert (_xmlHttp.responseText);

m'affiche bien le contenu XML généré par PHP, donc à priori, le retour semble être bon :/

Reply

Marsh Posté le 20-12-2006 à 10:04:49    

si tu fais un alert(_xmlHttp.responseText.rootNode.tagName); t'as bien exemple?

Reply

Marsh Posté le 20-12-2006 à 10:36:56    

anapajari a écrit :

si tu fais un alert(_xmlHttp.responseText.rootNode.tagName); t'as bien exemple?


 
FF semble bloquer dessus, IE ne me met pas d'erreur à cette ligne, mais ne va pas plus loin.
 
J'ai tenté de modifier mon script PHP générateur de XML, en mettant des "\n" à la fin de chacune des lignes XML générée. Voyant que ça ne marche pas trop sous FF pour la suite de mon parsing, j'ai retiré ces modifications. Et maintenant, là où tout passe avec FF, IE m'indique un _xmlHttp.responseXML.childNodes.length égal à 2 ... :heink:

Reply

Marsh Posté le 20-12-2006 à 10:37:46    

MossieurPropre a écrit :

alert (_xmlHttp.responseText);

m'affiche bien le contenu XML généré par PHP, donc à priori, le retour semble être bon :/


En même temps responseText on s'en fout, il est trivial d'avoir un responseText mais pas de responseXML


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 20-12-2006 à 20:13:54    

up :(

Reply

Marsh Posté le 21-12-2006 à 07:29:13    

personne ?

Reply

Marsh Posté le 21-12-2006 à 09:41:27    

envoies tout le code(php+js) sinon on s'en sortira pas ...

Reply

Marsh Posté le 21-12-2006 à 22:19:05    

wokay !
 
JS/HTML :
 

Code :
  1. <!--
  2.   -- AJAX Test 1
  3.   --
  4.   -- Aurélien Christman - 2006
  5.   --
  6.   -- Récupère les dernières entrées du livre d'or et des commentaires
  7.   -- de http://cecilou.proprenetworks.net et les affiche.
  8.   -- Notez que ceci est une page HTML, et non PHP.
  9.   --
  10.   -->
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  13. <head>
  14. <title>AJAX Test 01 ::</title>
  15. <link rel="stylesheet" href="style.css" type="text/css" />
  16. </head>
  17. <script type="text/javascript">
  18. _xmlHttp = null;
  19. var mouseState = 0;
  20. var xpos = 0;
  21. var ypos = 0;
  22. var definedID = 0;
  23. function getXMLHTTP() {
  24.     var xhr=null;
  25.    
  26.     if (window.XMLHttpRequest) {
  27.         xhr = new XMLHttpRequest();
  28.     }
  29.     else if (window.ActiveXObject) { // Internet Explorer
  30.         try {
  31.             xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  32.         } catch(e) {
  33.             try {
  34.                 xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  35.             } catch(e1) {
  36.                 xhr = null;
  37.             }
  38.         }
  39.     }
  40.     else
  41.     { // XMLHttpRequest non supporté par le navigateur
  42.         alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  43.     }
  44. return xhr;
  45. }
  46. function test01()
  47. {
  48. /* if (_xmlHttp&&_xmlHttp.readyState!=0) {
  49.  _xmlHttp.abord();
  50. }*/
  51. _xmlHttp=getXMLHTTP();
  52.     //on définit l'appel de la fonction au retour serveur
  53.     _xmlHttp.onreadystatechange = function() { test01IsBack(); };
  54. document.getElementById("message" ).className="attente_on";
  55.     _xmlHttp.open("GET", "http://mp.proprenetworks.net/AJAX/test01.php", true);
  56.     _xmlHttp.send(null);
  57. }
  58. function test01IsBack()
  59. {
  60.     if (_xmlHttp.readyState==4 && _xmlHttp.status == 200)
  61.     {
  62.        var docXML = _xmlHttp.responseXML;
  63.  alert (_xmlHttp.responseText);
  64. //  alert (_xmlHttp.responseText.rootNode.tagName);
  65.  alert(docXML.childNodes.length);
  66.  var comroot = docXML.firstChild.firstChild.childNodes;
  67.      var nom = comroot[1].firstChild.nodeValue;
  68.      var date = comroot[2].firstChild.nodeValue;
  69.      var com = comroot[4].firstChild.nodeValue;
  70.      var dateMsg = new Date;
  71.      dateMsg.setTime(date);
  72.      var lastRefresh = new Date;
  73.     
  74.      var msgMonth = dateMsg.getUTCMonth();
  75.      msgMonth++;
  76.     
  77.      document.getElementById("message" ).className="attente_off";
  78.      document.getElementById("lrDate" ).innerHTML="Dernier rafraichissement : " + lastRefresh.getHours() + "H" + lastRefresh.getMinutes() + ":" + lastRefresh.getSeconds() + "&nbsp;&nbsp;&nbsp;&nbsp;<input type = \"button\" onClick=\"test01();\" value = \"Rafraichir\">";
  79.      document.getElementById("et" ).innerHTML="<b>Dernier commentaire par " + nom + " le " + dateMsg.getUTCDate() + "/" + msgMonth + "/" + dateMsg.getUTCFullYear() + " à " + dateMsg.getUTCHours() + ":" + dateMsg.getUTCMinutes() + ":" + dateMsg.getUTCSeconds() + "</b>";
  80.      document.getElementById("crps" ).innerHTML=com;
  81.     }
  82. }
  83. function mouseDefineID(id) {
  84. definedID = id;
  85. }
  86. function mouseDown() {
  87. mouseState = definedID;
  88. }
  89. function mouseUp() {
  90. mouseState = 0;
  91. definedID = 0;
  92. }
  93. function mouseMove() {
  94. document.onmousemove = captureMousePosition;
  95. var posx = xpos + "px;"
  96. var posy = ypos + "px;"
  97. if (mouseState == 1) {
  98. // document.getElementById("aff" ).style.left = posx;
  99. // document.getElementById("aff" ).style.top = posy;
  100. } else if (mouseState == 2) {
  101.  //alert (posx);
  102. // document.getElementById("aff2" ).style.left = posx;
  103. // document.getElementById("aff2" ).style.top = posy;
  104. }
  105. }
  106. function captureMousePosition(e) {
  107. // xpos = e.pageX;
  108. // ypos = e.pageY;
  109.  document.getElementById("pos" ).innerHTML="x : " + xpos + "px. | y : " + ypos + "px; | mouseState : " + mouseState + " | aff2 x, y : " + document.getElementById("aff2" ).style.left + ", " + document.getElementById("aff2" ).style.top;
  110. }
  111. </script>
  112. <body onMouseUp="javascript:mouseUp();" onMouseDown="javascript:mouseDown();" onMouseMove="javascript:mouseMove();">
  113. <div class="upbar">
  114. <div id="lrDate">
  115. Initialisation ...
  116. </div>
  117. <div id="pos">
  118. </div>
  119. </div>
  120. <div class="affichage" id="aff" style="top: 100px; left: 50px;">
  121. <div class="entete" id="et" onMouseDown="mouseDefineID(1);">
  122. <b>Dernier commentaire</b>
  123. </div>
  124. <div class="corps" id="crps">
  125. </div>
  126. </div>
  127. <div class="affichage" id="aff2" style="top: 100px; left: 500px;">
  128. <div class="entete" id="et" onMouseDown="mouseDefineID(2);">
  129. <b>Test2</b>
  130. </div>
  131. <div class="corps" id="crps">
  132. Yeehaa.
  133. </div>
  134. </div>
  135. <div class="attente_off" id="message">Veuillez patienter...</div>
  136. <script type="text/javascript">test01();</script>
  137. </body>
  138. </html>


 
pas mal de bordel autour de tout ça, j'en profite pour faire des tests (notemment les déplacement de div à la souris)
 
CSS (même si on s'en fout) :
 

* {
 font-family: Verdana;
 font-size : 12px;  
}
 
.affichage {
 position: absolute;
 width: 400px;
 height: 200px;
 background-color: #ffefd4;
}
 
.entete {
 background-color: #fcd083;
}
 
.upbar {
 background-color: #aaaaaa;
 width: 100%;
}
 
.attente_off {
 visibility: hidden;
 position: absolute;
 left: 75px;
 top: 75px;
 width: 200px;
 height: 40px;
}
 
.attente_on {
 position: absolute;
 left: 75px;
 top: 75px;
 visibility: visible;
 font-size : 10px;  
 font-family: Verdana;
 border-style: solid;
 border-color: #000000;
 width: 300px;
 height: 40px;
 background-color: #FF0000;
 text-align: center;
}


 
PHP :
 

Code :
  1. <?php
  2. /*
  3. * AJAX Test 1
  4. * Aurélien Christman - 2006
  5. *
  6. * Annexe à test01.html
  7. *
  8. */
  9. header('Content-Type: text/xml');
  10. echo "<?xml version=\"1.0\" encoding=\"iso-8859-15\"?>";
  11. echo "<exemple>";
  12. echo "<commentaires>";
  13. $connect = mysql_connect ("localhost", "******", "******" );
  14. $db = mysql_query ("USE cecilou;" );
  15. $get_last_post = mysql_query ("SELECT * FROM commentaires ORDER BY date DESC LIMIT 0, 1;" );
  16. $last_post_user = mysql_result ($get_last_post, 0, login);
  17. $last_post_date = mysql_result ($get_last_post, 0, date);
  18. $last_post_photo = mysql_result ($get_last_post, 0, nom_photo);
  19. $last_post_comment = mysql_result ($get_last_post, 0, comment);
  20. echo "<table>commentaires</table>";
  21. echo "<nom>$last_post_user</nom>";
  22. $date = str_replace ("\n", "", $last_post_date);
  23. echo "<date>$date</date>";
  24. echo "<photo>$last_post_photo</photo>";
  25. echo "<comment>$last_post_comment</comment>";
  26. echo "</commentaires>";
  27. echo "</exemple>";
  28. ?>


 
en espérant que ça puisse aider :/

Reply

Marsh Posté le 22-12-2006 à 10:46:14    

tiens remplace juste ton initialisation de comroot par:

Code :
  1. var comroot = docXML.getElementsByTagName('exemple').item(0).getElementsByTagName('commentaires').item(0).childNodes;


et ça devrait roulèze.

 

Par ailleurs les commentaires dans une page html avant le doctype c'est pas une bonne idée!
et _xmlHttp = null; meriterait un petit var devant!

Message cité 1 fois
Message édité par anapajari le 22-12-2006 à 10:46:50
Reply

Marsh Posté le 22-12-2006 à 11:06:14    

anapajari a écrit :

tiens remplace juste ton initialisation de comroot par:

Code :
  1. var comroot = docXML.getElementsByTagName('exemple').item(0).getElementsByTagName('commentaires').item(0).childNodes;


et ça devrait roulèze.
 
Par ailleurs les commentaires dans une page html avant le doctype c'est pas une bonne idée!
et _xmlHttp = null; meriterait un petit var devant!


 
en effet, ça roulaize, merci beaucoup :jap:
 
Mais dans mon esprit, faire

Code :
  1. docXML.getElementsByTagName('exemple')


revient à la même chose que faire

Code :
  1. docXML.firstChild


 
Où est la différence ?


---------------
www.novemberguitars.com
Reply

Marsh Posté le 26-02-2007 à 18:17:05    

Bonjour, j'ai le meme probleme mais moi quand je fais un alert de  
docXML.getElementsByTagName('films').item(0).getElementsByTagName('film').item(0).childNodes;
 
en adaptant a mon XML, il me fait un "object nodelist", alors que j'aimerai simplement la liste des films (pour mon exemple).
 
par contre quand je fais un : alert(xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').length)), il me sort bien le nombre de films qui se trouvent dans le fichier xml.
 
Merci

Reply

Marsh Posté le 26-02-2007 à 18:18:36    

krovomi a écrit :

Bonjour, j'ai le meme probleme mais moi quand je fais un alert de  
docXML.getElementsByTagName('films').item(0).getElementsByTagName('film').item(0).childNodes;
 
en adaptant a mon XML, il me fait un "object nodelist", alors que j'aimerai simplement la liste des films (pour mon exemple).
 
par contre quand je fais un : alert(xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').length)), il me sort bien le nombre de films qui se trouvent dans le fichier xml.
 
Merci


getElementsByTagName (et childNodes) sortent une liste de node, si tu veux afficher ce qu'il y a dedans il faut l'extraire manuellement [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-02-2007 à 10:06:08    

et comment on fait ? (je suis un newbi en DOM).
Tu veux dire avec une boucle ou un truc comme ca ?
Si par exemple je veux afficher seulement le 31 eme film, comment je procède au niveau du code ?
Merci


Message édité par krovomi le 27-02-2007 à 10:07:50
Reply

Marsh Posté le 27-02-2007 à 10:08:13    

bin c'est un tableau, donc on s'en sert comme d'un tableau :o
tu peux jeter un oeil sur la la doc des fois ça aide [:tinostar]

Reply

Marsh Posté le 27-02-2007 à 10:24:42    

hummm mouais mais ca ne me dit pas comment faire pour afficher une valeur ca...

Reply

Marsh Posté le 27-02-2007 à 10:39:55    

gné [:w3c compliant]
Tu as un exemple de boucle sur la récupération des différents node de liste remontée par un getElementsByTagName.  
Que veux-tu de plus?

Reply

Marsh Posté le 27-02-2007 à 11:22:53    

j'ai ca : xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').childNodes[1].getAttribute("titre" ), et lorsque je fait un alert de ca, je devrais si je ne me trompe pas(je me trompe forcemment vu que ca ne l'affiche pas) afficher le titre du premier film.
Mon XML a cette architechture :  
<films>
<film id="CO284853" titre="10 Canoës, 150 lances et 3 épouses"/>
<film id="CO278917" titre="12 h 08 à l'est de Bucarest"/>
<film id="CO192322" titre="2046"/>
.....
</films>,
ce que je voudrais comprendre c'est simplement pourquoi il ne va pas chercher le titre de mon film, apres je vois comment le faire dans une boucle ca n'est pas le probleme...

Reply

Marsh Posté le 27-02-2007 à 11:56:27    

personne ne sait ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed