2012-01-16 4 views
0

J'ai créé une boucle en JavaScript qui lit le nom de mes nœuds et la valeur à l'intérieur.Boucle dans la boucle?

La boucle fonctionne pour le premier nœud et le second, mais sur le reste des nœuds, elle ne fait que répéter la valeur du deuxième nœud.

Ainsi, la sortie est comme ça:

Name on nod 1 is title 
The value in the node is XML Content and Data 

Name on nod 2 is Author 
The value in the node is XML Content and Data 

Et ainsi de suite.

Dois-je créer une boucle à l'intérieur de la boucle? Est-ce que je peux multi-bander l'arbre entier?

if (xmlDoc.parseError != 0) { 
    alert("Error Code: " + xmlDoc.parseError.errorCode + "\n" 
     + "Error Reason: " + xmlDoc.parseError.reason + "\n" 
     + "Error Line: " + xmlDoc.parseError.line) 
} 
root = xmlDoc.documentElement 
rootList = root.childNodes 
len = rootList.length 

x = xmlDoc.getElementsByTagName("title")[0] 
y = x.childNodes[0]; 

for (i = 0; i < len; i++) { 
    j = i + 1 
    document.write("Name on nod " + j + " is " + rootList.item(i).nodeName + "<br />") 
    document.write(" value of the the nod is " + y.nodeValue + "<br />" + "<br />"); 
} 
+1

Une boucle dans une boucle .... "Nous devons aller plus loin!" :-P – Quasdunk

+0

Je pense que vous cherchez des fonctions récursives http://javascript.about.com/library/blrecursive.htm –

+0

Si cela rendrait tout ezier, j'ai un php lib (dun vraiment se rappeler où je l'ai eu, comme j'ai dû le modifier pour le rendre efficace à 100% et aller plus loin dans les xml avec plusieurs enfants). Mais cela fait obtenir un xml comme un tableau EZ alors vous pouvez juste utiliser "echo json_encode (theArray);" pour l'envoyer à votre js en tant qu'objet, tout ce que vous avez à faire est de parcourir l'objet et de configurer ce dont vous avez besoin. C'est 100x plus facile que d'essayer d'analyser manuellement un XML en js. Faites-moi savoir si vous voulez la librairie et je serai heureux de l'afficher quelque part ou l'envoyer par courriel à vous. – SpYk3HH

Répondre

1

y pointe toujours vers le même noeud (y = x.childNodes [0]). Vous avez probablement l'intention d'obtenir un nœud différent à chaque itération de la boucle.

+0

Exactement ce que je suis dans, mais Im complètement nouveau à ce pas si jamais une étape prend environ une heure pour moi :) – Dymond