Parsing d'un XML, lapin komprÿ ... [AJAX] - HTML/CSS - Programmation
Marsh Posté le 14-12-2006 à 08:29:42
pourquoi tu fais docXML= _xmlHttp.responseXML.documentElement;?
moi je fais docXML= _xmlHttp.responseXML;
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 :
|
et pour gecko
Code :
|
Et tu as bien remarqué que "implementation" necessite un rootNode en plus alors que XMLDOM non
Marsh Posté le 15-12-2006 à 12:57:11
anapajari a écrit : nan y'a confondage surtout...
|
certes
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 ?!
Marsh Posté le 15-12-2006 à 13:26:54
euh alors en fait 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 .
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".
Marsh Posté le 17-12-2006 à 21:35:36
Marsh Posté le 17-12-2006 à 21:43:46
masklinn a écrit :
|
var nameNode = comroot.getElementsByTagName("nom" )[0]; |
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
Marsh Posté le 18-12-2006 à 09:30:57
ReplyMarsh 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
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
Si non, au moins, ça vous inspire de commentaires ? (Ces deux exemples...)
A++
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) |
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> |
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 ?
Marsh Posté le 20-12-2006 à 09:32:20
ajax c'est toujours la merde à debugger
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?
Marsh Posté le 20-12-2006 à 09:37:55
anapajari a écrit : ajax c'est toujours la merde |
Marsh Posté le 20-12-2006 à 09:43:57
anapajari a écrit : ajax c'est toujours la merde à debugger |
alert (_xmlHttp.responseText); |
m'affiche bien le contenu XML généré par PHP, donc à priori, le retour semble être bon
Marsh Posté le 20-12-2006 à 10:04:49
ReplyMarsh 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 ...
Marsh Posté le 20-12-2006 à 10:37:46
MossieurPropre a écrit :
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
Marsh Posté le 21-12-2006 à 09:41:27
envoies tout le code(php+js) sinon on s'en sortira pas ...
Marsh Posté le 21-12-2006 à 22:19:05
wokay !
JS/HTML :
Code :
|
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) :
* { |
PHP :
Code :
|
en espérant que ça puisse aider
Marsh Posté le 22-12-2006 à 10:46:14
tiens remplace juste ton initialisation de comroot par:
Code :
|
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!
Marsh Posté le 22-12-2006 à 11:06:14
anapajari a écrit : tiens remplace juste ton initialisation de comroot par:
|
en effet, ça roulaize, merci beaucoup
Mais dans mon esprit, faire
Code :
|
revient à la même chose que faire
Code :
|
Où est la différence ?
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
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 |
getElementsByTagName (et childNodes) sortent une liste de node, si tu veux afficher ce qu'il y a dedans il faut l'extraire manuellement
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
Marsh Posté le 27-02-2007 à 10:24:42
hummm mouais mais ca ne me dit pas comment faire pour afficher une valeur ca...
Marsh Posté le 27-02-2007 à 10:39:55
gné
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?
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...
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 :
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 ? ) 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 ...
A+