Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 10h05   #1
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
Par défaut Parser XML FF / IE

Bonjour,

Voilà, j'ai un petit souci pour parser un xml. Une différence de comportement entre IE et FF. IE, semble pour une fois me sortir les bons résultats... Une fois n'est pas coutume!

Donc je reçois un XML de la sorte :

Code :
1
2
3
4
5
6
7
8
9
10
11
<retour>
<region/>
<departement>
<departement1>Reunion</departement1>
</departement>
<commune>
<commune1 cp="01990">Relevant</commune1>
<commune1 cp="01620">Replonges</commune1>
<commune1 cp="01250">Revonnas</commune1>
</commune>
</retour>
J'aimerai le parser pour en obtenir cela :
Code :
1
2
3
4
5
6
<b>Departement</b>
Réunion
<b>Ville</b>
Relevant(01990)
Replonges(01620)
Revonnas(01250)
Pour cela j'ai mis en place ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var nbR=reponse.getElementsByTagName('region')[0].childNodes.length;
var nbD=reponse.getElementsByTagName('departement')[0].childNodes.length;
var nbV=reponse.getElementsByTagName('commune')[0].childNodes.length;
if(nbR>0){
menu.innerHTML+='<b>Région</b><br/>'
for (i=0; i<nbR; i++){
 menu.innerHTML+=reponse.getElementsByTagName('region')[0].childNodes.item(i).text+'<br />'
}
  }
 if(nbD>0){
  menu.innerHTML+='<b>Département</b><br/>'
for (i=0; i<nbD; i++){ 
menu.innerHTML+=reponse.getElementsByTagName('departement')[0].childNodes.item(i).text+'<br />'
 }
  }
      if(nbV>0){
  menu.innerHTML+='<b>Ville</b><br/>'
 for (i=0; i<nbV; i++){ 
 menu.innerHTML+=reponse.getElementsByTagName('commune')[0].childNodes.item(i).text+'<br />'
  }
 }
Ceci fonctionne bien sous IE, par contre sous FF, j'ai le double de noeuds dans mes valeurs nbD et nbV et que de undefined....

Quelqu'un peut m'aider!!! SIOUPLé!!!!
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h13   #2
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
Ca progresse!!

Si je fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(nbR>0){
 menu.innerHTML+='<b>Région</b><br/>'
for (i=0; i<nbR; i++){ 
menu.innerHTML+=reponse.getElementsByTagName('region1')[i].childNodes[0].nodeValue;+'<br />'
}
}
if(nbD>0){
 menu.innerHTML+='<b>Département</b><br/>'
for (i=0; i<nbD; i++){ 
menu.innerHTML+=reponse.getElementsByTagName('departement1')[i].childNodes[0].nodeValue+'<br />'
}
}
if(nbV>0){
menu.innerHTML+='<b>Ville</b><br/>'
 for (i=0; i<nbV; i++){ 
 menu.innerHTML+=reponse.getElementsByTagName('commune1')[i].childNodes[0].nodeValue+'<br />'
  }
  }
Ca fonctionne mieux, juste sous FF il s'arrête aux départements et ne m'affiche pas les ville, sous IE, aucun problème...

Any ideas?
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h30   #3
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Je ne suis pas en état de lire ton code. Mais j'imagine que tu as un problème lors de la récupération des nœuds de ton doc xml.

Je laisserai qqn d'autre essayer de corriger ton code mais juste par curiosité : c'est toi qui génère le fichier xml à partir d'une db côté serveur ? Si oui, n'aurais-tu pas la possibilité de générer un fichier JSon à la place ? Car sa manipulation est évidemment beaucoup plus simple côté client qu'un xml. :-)
(enfin, c'est mon opinion en tout cas. )
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h37   #4
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
Non, pas cette possibilité, le XML est ce qu'il est et je n'ai pas la main dessus...

PLease....
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h41   #5
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Bonjour,

Le tag <commune> de ton XML n'est pas fermé.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h42   #6
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
Si normalement il l'est mauvais copié collé de ma part...
Corrigé.
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h37   #7
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
En fait si je résume, mon problème vient du fait que je n'arrive pas à compter correctement mes noeuds enfants sous FF et IE :

Code :
var nbV=reponse.getElementsByTagName('commune')[0].childNodes.length;
Semble "correct" sous IE, mais plus que double sous FF.

j'ai essayé count mais j'obtiens "undefined" sous IE et FF.
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h41   #8
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Code :
var nbV=reponse.getElementsByTagName('commune').length;
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h48   #9
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
Quand tu boucles sur les noeuds de ton élément "commune", teste d'abord le nodeType (voir types) pour te débarasser des noeuds de texte vides dûs à la présence des espaces, indentations et retours chariot dans le XML source, qui si je ne m'abuse ne sont pas interprétés de la même manière sous IE/FF... -_-

@andry : tu ne devrais pas plutot compter les "commune1" ? oO (edit après ta réponse : c'est bien ce que je pensais )
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h55   #10
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Essaye avec
Code :
reponse.getElementsByTagName('commune1')[i].firstChild.nodeValue
Citation:
Envoyé par RomainVALERI Voir le message
@andry : tu ne devrais pas plutot compter les "commune1" ? oO
Cool la fonctionnalité copier/coller
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 12h30   #11
Futur Membre du Club
 
Alexis
Inscription : mai 2010
Messages : 107
Détails du profil
Informations personnelles :
Nom : Alexis

Informations forums :
Inscription : mai 2010
Messages : 107
Points : 17
Points : 17
Code :
var nbV=reponse.getElementsByTagName('commune1').length;
Alexis35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web