我需要根据条件删除XmlNode.怎么做?
foreach (XmlNode drawNode in nodeList)
{
//Based on a condition
drawNode.RemoveAll(); //need to remove the entire node
}
Run Code Online (Sandbox Code Playgroud)
Fre*_*örk 60
这应该是你的诀窍:
for (int i = nodeList.Count - 1; i >= 0; i--)
{
nodeList[i].ParentNode.RemoveChild(nodeList[i]);
}
Run Code Online (Sandbox Code Playgroud)
如果使用常规for循环进行循环,并将其"向后"循环,则可以随时删除项目.
更新:这是一个完整的示例,包括加载xml文件,定位节点,删除它们并保存文件:
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList nodes = doc.SelectNodes("some-xpath-query");
for (int i = nodes.Count - 1; i >= 0; i--)
{
nodes[i].ParentNode.RemoveChild(nodes[i]);
}
doc.Save(fileName);
Run Code Online (Sandbox Code Playgroud)
您不能轻松地使用迭代器(foreach 语句)来删除节点。据我所知,您可以执行以下操作:
1) 在 foreach 循环中,保存应删除的所有元素的列表。然后循环遍历这些元素并删除它们。
2) 使用普通的 for 循环并跟踪删除一项后要访问的下一个元素。
编辑:当使用 for 循环时,请按照 Fredrik 建议的方式进行,向后循环。
| 归档时间: |
|
| 查看次数: |
48290 次 |
| 最近记录: |