一次删除多个XML节点(RemoveChild())

很好的一篇文章

原文地址:http://www.cnblogs.com/alexzp/archive/2012/10/23/2735715.html


1).(删除一个指定的节点):

 1 nodelist = xmldoc.SelectSingleNode("employees").ChildNodes;            
 2             foreach (XmlNode xn in nodelist)
 3             {
 4                 //remove node by node's attribute
 5                 xmlele = (XmlElement)xn;
 6                 if (xmlele.GetAttribute(id") == 103")
 7                 {
 8                      xmln.RemoveChild(xn);                    
 9                 }                
10 
11                 remove node by node's name
12                 if (xn.Name == test13                 {
14                     xmln.RemoveChild(xn);                
15                 }
16 
17                 ////remove node by node's innertext
18                 if (xn.FirstChild.InnerText.ToString().Contains(a"))
19                 {
20                     xmln.RemoveChild(xn);
21                 }
22             }         

这样只能删除找到的第一个与if语句相同的节点(node).但是如果我们想一次删除多个node的话,这样的结果就不是我们想要的了。
RemoveChild()方法修改childnodes List,并且使foreach失效,所以你需要中止循环后的第一个Remove。删除多个node,你必须使用一个Outer Loop(Break 它,如果没有删除的循环),或向后扫描列表:

2). Outer Loop:

1 while (true) 2 { 3 bool removed = false; 4 5 { 6 7 { 8 xn.ParentNode.RemoveChild(xn); 9 removed = true; 10 break; 11 } 12 } 13 14 if (!removed) 15 16 }
3). 向后扫描列表:

1 for (int i = nodelist.Count - 1; i >= 0; i--) 2 { 3 xmln = nodelist[i]; 4 if (xmln.Name == 5 xmln.ParentNode.RemoveChild(xmln); 6 7 xmln=nodelist[i]; 8 if (xmln.FirstChild.InnerText.ToString().Contains("a")) 9 xmln.ParentNode.RemoveChild(xmln); 10 }
记得在最后要保存修改的:
xmldoc.Save(@"test.xml");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇