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);
}

  

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

时间: 2024-10-09 23:05:41

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

用adb pull命令从android系统中读取文件失败的原因及解决办法

问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied 原因:是由于文件权限原因引起. 使用ls -l命令查看android系统中的文件权限为: -rw-rw---- app_51   app_51 也就是说,该文件只有app_51用户以及app_51群组拥有读写权限,而adb shell的用户为shell,既不是app_51用户,也不在app_51群组中,所以没有权限读取这个文件.所以就出现了 Permission denied. 解决方法:

CI 失败的原因与解决办法

导读 敏捷软件开发必须辅以有效的持续集成(CI).CI就是持续进行分析.构建.测试和部署的流程.在发布到生产系统之前,CI会检查代码质量和测试产品的业务逻辑. 理想情况下,当构建失败时,我们是不能允许软件继续发布到生产上.但是,持续集成的理念并未贯彻到每一个敏捷团队.有些团队非常严肃地对待CI实践,有些只是为了敏捷而做,有些则完全忽略CI流程,甚至有的连CI服务器都没有搭建. 有很多种原因导致团队忽视CI流程.工作有不同的优先级,产品经理不理解代码质量,测试流程和完整构建的重要性.技术经理无法分

C# 添加,修改,删除Xml节点 摘录

http://blog.csdn.net/zth603/article/details/5743880 C# 添加,修改,删除Xml节点 //添加xml节点    private void AddXml(string image, string title)     {        XmlDocument xmlDoc = new XmlDocument();        xmlDoc.Load(Server.MapPath("../flash/dati.xml")); XmlNo

强力删除Avast后导致系统不断重启解决办法

我使用的是XP系统,Avast版本是7.0.由于avast7.0无法更新病毒库和软件,所以想卸载掉再重装. 问题来了!Avast无法直接卸载!用控制面板的卸载工具和360卸载功能都无法卸载,提示"setup.ovr-应用程序错误".下载新版安装包之后,也无法覆盖,同样提示应用程序错误.最后怒了,用360强力卸载将Avast文件夹直接强力删除了. 重启电脑后,电脑无法进入系统.启动过程中能够看到进度条,然后又重启,反复.尝试进入"安全模式",成功.网上搜索,下载了36

数据库连接失败的原因及解决方法

各种业务系统在使用过程中都会遇到一些问题,因数据库连接失败,不能登录管理软件就是其中之一,这个很令人头疼而且常见的问题 一般的业务系统均采用的是SQL数据库,我们这里总结了SQL数据库连接失败的原因和解决方法: 原因一:登录账号.密码.服务器名称.数据库名称登录错误导致不能连接,这个比较常见,仔细检查好所填信息是否正确,填写正确一般就可以解决. 解决方法:当正在使用的软件出现数据库不能连接时,一般就是服务器名出现问题,更改服务器名称一般可以解决问题.数据库如果是安装在本机,服务器名可以用".&q

使用asp.net MVC4中的Bundle遇到的问题及解决办法分享

本文转自http://www.jb51.net/article/47264.htm 这篇文章主要介绍了使用asp.net MVC4中的Bundle遇到的问题及解决办法,需要的朋友可以参考下 背景    之前有过使用MVC3的经验,也建过MVC4的基本样例看过,知道有bundle这么一个方法. 近日想建个网站使用MVC4,但是我觉得在基本样例上改不好,有太多无用的东西,所以就建了一个空白的MVC的程序,然后自己写需要的东西, 将程序的目标框架从4.5降到了4.0(我使用的是VS2013),问题就来

关于SSIS批量抽取Excel文件报0x80004005错误的解决办法

原文:关于SSIS批量抽取Excel文件报0x80004005错误的解决办法 标题: Microsoft Visual Studio ------------------------------ Package [连接管理器“Excel 连接管理器”] 出错: SSIS 错误代码 DTS_E_OLEDBERROR.出现 OLE DB 错误.错误代码: 0x80004005. 已获得 OLE DB 记录.源:“Microsoft JET Database Engine” Hresult: 0x80

sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法

启动SQL Server 2008 Management Studio 工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改  取消勾选即可. sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法,布布扣,bubuko.com

同一个ASP.NET页面放置多个UpdatePanel分别刷新的解决办法。.

原文:同一个ASP.NET页面放置多个UpdatePanel分别刷新的解决办法.. ScriptManager添加EnablePartialRending属性 <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager> 所有的UpdatePanel需要设置UpdateMod