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 :

Tester l'existence d'un noeud XML avec JavaScript


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Tester l'existence d'un noeud XML avec JavaScript
    Bonjour tout le monde

    Je cherche à tester l'existence d'un noeud XML avec JavaScript. Voici mon fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <apartments>
        <maxID>2</maxID>
        <apartment id="1" cat="1">
          <prices>
            <shared-bedroom>595</shared-bedroom>
          </prices>
        </apartment>
        <apartment id="2" cat="2">
          <prices>
            <shared-bedroom>600</shared-bedroom>
            <single-bedroom>400</single-bedroom>
          </prices>
    </apartment>
    Comme vous le constatez, les noeuds contenu dans le noeud "prices" peuvent varier.

    Je peux avoir un "shared-bedroom". Ou bien encore un "single-bedroom" tout simplement. Ou bien les deux.

    C'est pourquoi j'ai besoin de traiter mon XML avec JavaScript pour tester si l'un ou l'autre noeud existe pour mon affichage HTML.

    J'ai créé le script suivant :


    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
     
    var apartments      = xmlDoc.getElementsByTagName("apartment");
    countApartments     = apartments.length;
    document.getElementById("apartments").innerHTML = '';
     
     
    for(i = 0; i < countApartments; i++) {
     
    	/* List prices */
    	var sharedBedroom   = apartments[i].getElementsByTagName("shared-bedroom");
    	var singleBedroom   = apartments[i].getElementsByTagName("single-bedroom");
    	var listPrices 		= '';
     
    	if(sharedBedroom.length > 0)	listPrices+= '<li><strong>Price:</strong> from $'+xmlDoc.getElementsByTagName("shared-bedroom")[i].firstChild.nodeValue+'/month/person</li>';
    	if(singleBedroom.length > 0)	listPrices+= '<li><strong>Price:</strong> from $'+xmlDoc.getElementsByTagName("single-bedroom")[i].firstChild.nodeValue+'/month</li>';
    }
    Mais cela ne semble pas fonctionner ! Qu'est-ce qui cloche avec mon code ?

    Merci et bonne nuit tout le monde

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Mais cela ne semble pas fonctionner ! Qu'est-ce qui cloche avec mon code ?
    plusieurs choses...et notamment dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.getElementsByTagName("shared-bedroom")[i]
    le i est le compteur sur apartments donc il ne réfère pas le bon indice de sharedBedroom.

    Comme tu parcours sharedBedroom et singleBedroom, et que tu les as déjà "catché" il te faut les utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      for( k=0; k < sharedBedroom.length; k++){
        listPrices += '<li><strong>Price:</strong> from $' +sharedBedroom[k].firstChild.nodeValue+'/month/person</li>';
      }
      for( k=0; k < singleBedroom.length; k++){
        listPrices += '<li><strong>Price:</strong> from $' +singleBedroom[k].firstChild.nodeValue+'/month</li>';
      }

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Bonjour NoSmoking,

    Et merci pour ta réponse

    Citation Envoyé par NoSmoking Voir le message
    plusieurs choses...et notamment dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.getElementsByTagName("shared-bedroom")[i]
    le i est le compteur sur apartments donc il ne réfère pas le bon indice de sharedBedroom.
    D'accord mais, ce code n'est pas de moi. En fait, c'est celui que tu me proposes ? Car il fait planter le script..


    Citation Envoyé par NoSmoking Voir le message
    Comme tu parcours sharedBedroom et singleBedroom, et que tu les as déjà "catché" il te faut les utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      for( k=0; k < sharedBedroom.length; k++){
        listPrices += '<li><strong>Price:</strong> from $' +sharedBedroom[k].firstChild.nodeValue+'/month/person</li>';
      }
      for( k=0; k < singleBedroom.length; k++){
        listPrices += '<li><strong>Price:</strong> from $' +singleBedroom[k].firstChild.nodeValue+'/month</li>';
      }
    Par contre, si je ne touche pas à mes variables sharedBedroom et singleBedroom, tes boucles avec le nouvel indice k fonctionnent à merveille !

    Merci pour ton aide, NoSmoking

    Et bonne soirée..

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Citation Envoyé par molinadiaz
    D'accord mais, ce code n'est pas de moi. En fait, c'est celui que tu me proposes ? Car il fait planter le script..
    c'est ce que l'on trouve à la ligne 14 et 15 du script de ton premier message et c'était la source de ton problème

    Citation Envoyé par molinadiaz
    Par contre, si je ne touche pas à mes variables sharedBedroom et singleBedroom, tes boucles avec le nouvel indice k fonctionnent à merveille !
    c'était le but de la correction de remplacer, ligne 14, le code xmlDoc.getElementsByTagName("shared-bedroom")[i] par sharedBedroom[k], idem pour la ligne 15.

Discussions similaires

  1. Tester l'existence d'un noeud dans un fichier xml
    Par tunwim dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2013, 13h32
  2. Tester l'existence d'un noeud dans un fichier xml
    Par andromeda dans le forum C#
    Réponses: 2
    Dernier message: 07/02/2009, 09h29
  3. incrémenter valeur d'un noeud xml avec javascript
    Par caweb dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/01/2008, 09h52
  4. [DOM] Création d'un noeud xml avec childNode
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/03/2007, 11h18
  5. xmldocument : tester l'existence d'un noeud enfant
    Par Rustine dans le forum Delphi
    Réponses: 3
    Dernier message: 04/08/2006, 16h37

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