当前位置: 代码迷 >> ASP.NET >> 大家来看看,删除XML节点时候出来的奇怪有关问题
  详细解决方案

大家来看看,删除XML节点时候出来的奇怪有关问题

热度:6745   发布时间:2013-02-26 00:00:00.0
大家来看看,删除XML节点时候出来的奇怪问题.
XmlDocument   xmld   =   new   XmlDocument();
xmld.Load( "D:/ty/as.xml ");
XmlNode   root   =   xmld.SelectSingleNode( "softwares ");
XmlNodeList   xl   =   root.SelectNodes( "software ");
//XmlNodeList   xl   =   root.ChildNodes;
foreach(XmlNode   n   in   xl)
{
        root.RemoveChild(n);
}
xmld.Save( "D:/ty/as1.xml ");

代码如上,出问题的地方就在XmlNodeList   xl   =   root.SelectNodes( "software ");
//XmlNodeList   xl   =   root.ChildNodes;
我如果用了注释中的语句来获取root下面的节点,在foreach   中删除的时候只执行一次就跳出了(就这里我觉得很奇怪),结果只会删除一个节点.如果用   root.SelectNodes( "software ")这样子的,就不会出问题,会全部都删除了!
虽然功能实现了,但是我试了半天用root.SelectNodes( "software "),和root.ChildNodes   得到的东西是一样的,但就是不知道删除的时候为什么会出错!


------解决方案--------------------------------------------------------
root.SelectNodes( "software ")与root.ChildNodes集合各含几个元素?肯定不一样的。
------解决方案--------------------------------------------------------
学习。。。。
------解决方案--------------------------------------------------------
foreach操作 读取 数据 是 只读 模式的
你需要 用 for代替
for(int ix=0; ix <xl.Length; ix++)
{
root.RemoveChild(xl[ix]);
}

------解决方案--------------------------------------------------------
for(int ix=0; ix <xl.Length; ix++){root.RemoveChild(xl[ix]); ix -- ; //这里补充一句.}
  相关解决方案