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