2015-02-09 88 views
0

我想循環通過一個XML JavaScript的childNodes動態使用for循環,我不明白爲什麼這不起作用?請看看我的代碼 - 謝謝!JavaScript的xml循環childNodes

XML結構:

<data> 

<node> 
<child>child1</child> 
<child>child2</child> 
</node> 

<node> 
<child>child1</child> 
</node> 

<node> 
<child>child1</child> 
<child>child2</child> 
<child>child3</child> 
</node> 

</data> 

的Javascript:

<script> 

if (window.XMLHttpRequest){ 
    xhttp=new XMLHttpRequest(); 
}else{ 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xhttp.open("GET","data.xml",false); 
xhttp.send(); 
xmlDoc= xhttp.responseXML; 

var node = xmlDoc.getElementsByTagName("node"); 
var child = xmlDoc.getElementsByTagName("child"); 

document.write("len="+node.length+"<br>"); 

for (var i = 0; i < node.length ; i++){ 

    document.write(""+i+"=<br>"); 

    for (var j = 0; j < child.length ; j++){ 
     document.write("childNodes= "+j+" - "+child[j].childNodes[0].nodeValue+"<br>"); 
    } 
} 

</script> 

輸出:

len=3 
0= 
childNodes= 0 - child1 
childNodes= 1 - child2 
childNodes= 2 - child1 
childNodes= 3 - child1 
childNodes= 4 - child2 
childNodes= 5 - child3 
1= 
childNodes= 0 - child1 
childNodes= 1 - child2 
childNodes= 2 - child1 
childNodes= 3 - child1 
childNodes= 4 - child2 
childNodes= 5 - child3 
2= 
childNodes= 0 - child1 
childNodes= 1 - child2 
childNodes= 2 - child1 
childNodes= 3 - child1 
childNodes= 4 - child2 
childNodes= 5 - child3 

應該輸出:

len=3 
0= 
childNodes= 0 - child1 
childNodes= 1 - child2 
1= 
childNodes= 0 - child1 
3= 
childNodes= 0 - child1 
childNodes= 1 - child2 
childNodes= 2 - child3 

回答

0

找到了解決方法,繼承人我做了什麼。希望這可以幫助別人那裏..

更新的Javascript:

<script> 

if (window.XMLHttpRequest){ 
    xhttp=new XMLHttpRequest(); 
}else{ 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xhttp.open("GET","data.xml",false); 
xhttp.send(); 
xmlDoc= xhttp.responseXML; 

function RemoveWhitespace(xml){ 
    var loopIndex; 
    for (loopIndex = 0; loopIndex < xml.childNodes.length; loopIndex++) { 
     var currentNode = xml.childNodes[loopIndex]; 
     if (currentNode.nodeType == 1){RemoveWhitespace(currentNode);} 
     if (((/^\s+$/.test(currentNode.nodeValue))) && (currentNode.nodeType == 3)){ 
      xml.removeChild(xml.childNodes[loopIndex--]); 
     } 
    } 
} 

RemoveWhitespace(xmlDoc); 

var node = xmlDoc.documentElement.childNodes; 
document.write("len="+node.length+"<br>"); 

for(var i = 0; i < node.length; i++){ 

    var child = node[i]; 
    document.write(i+"= <br>"); 

    for(var j = 0; j < child.getElementsByTagName('child').length; j++){ 
     document.write("childNodes= "+j+" - "+child.getElementsByTagName('child')[j].textContent+"<br>"); 
    } 
} 

</script> 

輸出:

len=3 
0= 
childNodes= 0 - child1 
childNodes= 1 - child2 
1= 
childNodes= 0 - child1 
2= 
childNodes= 0 - child1 
childNodes= 1 - child2 
childNodes= 2 - child3