首页 > 代码库 > 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); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。