IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Parser XML FF / IE


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é!!!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Par défaut
    Ca progresse!!

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  3. #3
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    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. )

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Par défaut
    Non, pas cette possibilité, le XML est ce qu'il est et je n'ai pas la main dessus...

    PLease....

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

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

    A+.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Par défaut
    Si normalement il l'est mauvais copié collé de ma part...
    Corrigé.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbV=reponse.getElementsByTagName('commune').length;

  9. #9
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    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 )

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbV=reponse.getElementsByTagName('commune1').length;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML] Parser XML
    Par RobinJulie dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/02/2005, 08h48
  2. Parser XML -> PDF
    Par ebaynaud dans le forum Modules
    Réponses: 2
    Dernier message: 12/10/2004, 14h07
  3. [SAX] NoSuchElementException sur parser XML
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/05/2004, 14h42
  4. parser xml
    Par billout dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/11/2003, 11h08
  5. Parser XML
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 03h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo