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 :
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
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>
La fonction getElementByIdXML() :
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'), .......
A l'exécution, j'obtiens l'erreur suivante : ListNoeud[i].getAttribute is not a function
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]; } } } }
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.
Partager