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