读书人

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

发布时间: 2011-12-10 22:22:01 作者: rapoo

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

读书人网 >asp.net

热点推荐