首页 > 代码库 > asp.net批量删除XML节点失败的原因及解决办法

asp.net批量删除XML节点失败的原因及解决办法

今天操作XML的时候,用到了批量循环删除节点.出现了问题,即循环未结束,程序就跳出循环。搞了好久才弄明白。

解决前的代码:

XmlNodeList items = xn.ChildNodes; //获取节点列表//删除所有节点for (int i = 0; i < items.Count; i++){     XmlElement page = (XmlElement)items[0];     xn.RemoveChild(page); }

因为每次循环,删除节点后,item.Count的值都会-1。

如果当前的item.Count是5,i=1,第一次循环Count(5)-1=4,则这个时候的i++就是2,第二次的时候Count(4)-1就是3,而i++后就是3,所以满足条件i<Count,于是退出循环。这样就造成了没有完全遍历XML文件的全部节点,所以会中途跳出循环。

当然你用foreach(XmlNode in item.Count)的办法也不行。

解决方案是:

int len = items.Count;   for (int i = 0; i < len; i++){       XmlElement page = (XmlElement)items[0];        xn.RemoveChild(page); }