javascript xml循环子节点
javascript xml loop childNodes
我想使用for循环动态地循环通过XML javascript子节点,我不明白为什么这不起作用?请看一下我的代码-谢谢!
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
找到了解决这个问题的方法,这就是我所做的。希望这能帮助到其他人。。
更新的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
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- RadTreeView 节点循环
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- javascript xml循环子节点
- jQuery - 如何循环删除仅某些子节点
- 获取循环中引用的子节点的水平偏移位置
- 循环通过TinyMCE中当前节点的子节点
- 循环遍历子节点
- KinteticJS -销毁节点,无限while循环,因为子节点没有被删除
- Java脚本递归地添加子节点以无限循环结束
- 在javascript中循环子节点