0
我需要從C#中的XML文件中刪除所有特定的節點。 爲了做到這一點,我選擇使用XPath查詢所有節點和嘗試下面的代碼:如何從C#中的XML文檔中刪除所有特定的節點?
XmlNodeList nodeList = xml.SelectNodes("//Test");
foreach (XmlNode node in nodeList)
{
node.ParentNode.RemoveChild(node);
}
QA數據顯示,目前仍然存在於XML文件<Test>
節點上面的代碼執行後。
我做錯了什麼?我應該如何從XML文檔中刪除所有指定的節點?
的警告適用於不斷變化的集合被迭代,這在你的問題'foreach'循環從來不會。看起來您可能誤解了您的問題的實際原因。也許你沒有將更新的XML保存迴文件? (單獨調用'RemoveChild'不會將更改持久化到磁盤上。) – kjhughes
@kjhughes爲什麼確定'RemoveChild'不會改變集合?爲什麼相同的代碼與'for'正確工作? – DaddyM
'node.ParentNode.RemoveChild(node)'從其父節點中移除'node';它沒有「節點」的概念在XPath查詢的結果中。 – kjhughes