Je reçois des données XML d'un serveur... mais je ne connais pas à l'avance son contenu.

Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<variables>
  <variable>
    <name>name_of_variable</name>
    <type>type_of_variable</type>
    <value>type_of_variable</value>
  </variable>
  <variable>
     ...
  </variable>
  ...
</variables>
Voici comment je procède :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
//je vérifie si le noeud 'variables' existent
if (xmldoc.getElementsByTagName('variables').length > 0) {
 
  //je stocke le nombre de noeuds 'variable'
  var variable_nodes = xmldoc.getElementsByTagName('variable');
 
  for (i = 0; i < variable_nodes.length; i++) {
    var name_node = variable_nodes[i].getElementsByTagName("name");
     ...
  }
}
Et ca marche... maintenant cela m'arrangerait que les données reçus soit modifiées avec cette syntaxe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<variable>
    <name>name_of_variable</name>
    <type>type_of_variable</type>
    <value>type_of_variable</value>
</variable>
<variable>
     ...
</variable>
  ...
Donc ne plus avoir le noeud 'variables'

J'ai repris le même code qu'avant: je regarde si un noeud variable existe. Si oui je compte combien il y en a. Ensuite je boucle dessus... ca marche s'il y a seulement un noeud 'variable'... mais pas plus, ce qui me fait penser donc qu'il ne trouve pas le nombre de noeud...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
//je vérifie si le noeud 'variable' existent
if (xmldoc.getElementsByTagName('variable').length > 0) {

  //je stocke le nombre de noeuds 'variable'
  var variable_nodes = xmldoc.getElementsByTagName('variable');
			
  for (i = 0; i < variable_nodes.length; i++) {
    var name_node = variable_nodes[i].getElementsByTagName("name");
     ...
  }
}
Comment faire ? Est-ce je suis obligé d'englober les noeuds variable dans un noeud variables ? Plus précisément, pourquoi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
var variable_nodes = xmldoc.getElementsByTagName('variable');
dans le premier cas me retourne la collection de noeud variable... mais pas dans le deuxième cas ? Merci pour votre aide