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 :

[XMl/DOM/ChildNodes] Liste des filles directes d'une branche


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut [XMl/DOM/ChildNodes] Liste des filles directes d'une branche
    Bonjour,

    Voilà je tente d'obtenir la liste des branches directes d'une branche avec l'attribut NodeLists mais impossible de l'exploiter.

    Le truc étant que je veux pouvoir gérer l'affaire de façon générique, sans connaître le nom des balises à priori.

    Voici mon 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
    15
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tree SYSTEM "tree.dtd">
    <tree>
      <Modem id="+33683508831" etat="panne">
        <Transformateur id="988" etat="ok" />
        <Transformateur id="987" etat="panne" />
      </Modem>
      <Modem id="0102030400" etat="panne">
        <Transformateur id="01020304" etat="probleme">
          <Depart id="010203" etat="ok">
            <PointLumineux id="02A" etat="ok" />
          </Depart>
        </Transformateur>
      </Modem>
    </tree>
    Mon bout de code XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    var doc = xhr.responseXML; //AJAX
     
    var maBranch = getElementByIdXML(doc,branch.getId()); //branch.getId() contient un l'id du noeud dont on veut les fils directs
     
    var ListNoeud = maBranch.childNodes;						
     
    for (j=0;j<ListNoeud.length;j++) {
     var item = {
    		"id" : ListNoeud[j].getAttribute('id'), .......
    La fonction getElementByIdXML() :
    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
     
                    function getElementByIdXML(the_node,the_id) {
    				//get all the tags in the doc
    				node_tags = the_node.getElementsByTagName('*');
    				for (i=0;i<node_tags.length;i++) {
    				//is there an id attribute?
    					if (node_tags[i].hasAttribute('id')) {
    						//if there is, test its value
    						if (node_tags[i].getAttribute('id') == the_id) {
    							//and return it if it matches
    							return node_tags[i];
    						}
    					}
    				}
    			}
    A l'exécution, j'obtiens l'erreur suivante : ListNoeud[i].getAttribute is not a function

    Alors que lorsque je remplace maBranch.childNodes par maBranch.getElementsByTagName('*'), ça fonctionne très bien. Le seul problème étant que je n'obtiens pas seulement les filles directes mais toute l'arborescence.

    Quelqu'un a-t-il une solution pour moi ? Y-a-t-il un autre moyen d'obtenir les branches filles directes ?

    Merci beaucoup.

  2. #2
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut
    ok réponse trouvée ... parfois ça aide d'écrire un topic, ça permet de remettre les choses à plat.

    J'ai cherché mon erreur sur google (.getAttribute is not a function) et j'ai trouvé ça ->http://www.thescripts.com/forum/thread573381.html

    Apparement mon problème est un bug bien connu, pour le contourner, le plus simple est d'avoir un branche morte et de commencer le for à 1.

    A bientôt.

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

Discussions similaires

  1. [Interbase] Liste des utilisateurs enregistrés pour une BD
    Par touhami dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/02/2007, 07h29
  2. Réponses: 1
    Dernier message: 13/09/2006, 11h50
  3. Réponses: 2
    Dernier message: 24/03/2006, 09h55
  4. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41

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