我在从我的文档中移除XML元素时遇到问题。我已经搜索论坛,我认为我正在做的事情,请你能帮我解释一下我搞砸了什么?无法让我的XML文档移除孩子
我有一个数组包含我正在循环的ID。在那个循环中,我循环访问XML文档以查找其“myId”属性与数组中的ID相同的元素。 当我找到一个我想从XML文档中删除该元素。
这里是我的代码:
var xmlFilename=document.getElementById('xmlFilename').value;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",xmlFilename,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
// lets get all the xml elements into xAll
var xAll=xmlDoc.getElementsByTagName('*');
// lets use the buttonList array - this corresponds to the elements in the xml to hide
for (var i=0; i<buttonList.length;i++) {
alert ("Looking for "+buttonList[i]);
//find the XML node with the same id
for(var j=0;j<xAll.length;j++) {
y=xAll[j];
if (y.getAttribute('myId')==buttonList[i]) {
alert('Found a match');
xmlDoc.documentElement.removeChild(y);
alert('removed');
}
}
alert('next!');
}
alert('all done');
它通过循环预期,但是当它找到一个匹配的xmlDoc.documentElement.removeChild(Y); 行会导致脚本失败,并且永远不会处于“已删除”状态。
我很感谢任何正确的方向帮助/指针。
谢谢,马克
你能引擎收录的XML的一个片段?您正在从'documentElement'中移除子项 - 但是这些节点是否指向'root'节点的子项? – Kami
示例XML: ' \t \t \t 资料 sectionTitle> \t \t 这是介绍文字 sectionPreamble> \t \t 真棒语句 \t \t 我是声明 sectionStatement> \t \t 我另一语句 sectionStatement> \t \t 这是与MYID的元素可以出现在XML内不同水平的出口文本 sectionPostscript> \t ' 。 –
的确,您正在删除不是“documentElement”子节点的节点,这就是为什么它失败。查看Yoshi发布的解决方案的答案。 – Kami