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.