如何从XmlNodeList中删除XmlNode
我需要根据条件删除XmlNode。 怎么做?
foreach (XmlNode drawNode in nodeList) { //Based on a condition drawNode.RemoveAll(); //need to remove the entire node }
这应该是你的诀窍:
for (int i = nodeList.Count - 1; i >= 0; i--) { nodeList[i].ParentNode.RemoveChild(nodeList[i]); }
如果使用常规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);
您无法轻松使用迭代器(foreach语句)来删除节点。 在我看来,你可以做到以下几点:
1)在foreach循环中,保存应删除的所有元素的列表。 然后,您只需遍历这些元素并将其删除。
2)使用普通的for循环,并在删除一个项目后跟踪哪个是要访问的下一个元素。
编辑:当使用for循环时,按照Fredrik建议的方式进行,循环向后循环。
如果您尝试从XML DOM中删除节点,则这不是正确的方法。 因为XMLNodeList
只是一个节点列表。 而是要从父节点中删除节点。 像这样:
XmlNode parentNode = // some value XmlNode drawNode = // some value parentNode.ParentNode.RemoveChild(drawNode);
以下不是更简单一点:
上述就是C#学习教程:如何从XmlNodeList中删除XmlNode分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
XmlDocument doc = new XmlDocument(); doc.Load(fileName); XmlNodeList nodes = doc.SelectNodes("some-xpath-query"); while (nodes.FirstChild != null) { nodes.RemoveChild(nodes.FirstChild); } doc.Save(fileName);
XmlNodeList xnodeContact = xmldocContact.GetElementsByTagName("contact"); foreach (ListViewItem item in listViewContacts.Items) { if (item.Checked) { if (item.Index >= 0) xnodeContact[0].ParentNode.RemoveChild(xnodeContact[0]); listViewContacts.Items.Remove(item); } } } xmldocContact.Save(appdataPath + "\WhatAppcontactList.xml"); Invalidate();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1025837.html