首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2011-12-10 
大家来看看,删除XML节点时候出来的奇怪问题.XmlDocumentxmldnewXmlDocument()xmld.Load( D:/ty/as.xml

大家来看看,删除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 -- ; //这里补充一句.}

热点排行