[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:
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:
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:
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.