関数RemoveChild(xmlnodeノード)がC#で失敗しました
-
02-10-2019 - |
質問
removeChild()で私の子要素の一部を削除しようとするとき。しかし、例外をスローします。以下にコードを添付しました。
nodeName = doc.SelectSingleNode("//Equipment//DataCollections//EnabledIDs//MyID[@id='" + attrValue + "']");
// Found the nodeName successfully druing run time.
doc.DocumentElement.RemoveChild(nodeName);
// faild to Remove the node
以下にエラーを表示します:
An unhandled exception of type 'System.ArgumentException' occurred in System.Xml.dll
Additional information: The node to be removed is not a child of this node.
ノードを削除するにはどうすればよいですか?
アップデート
VS2005&.NET 2.0の使用。
解決
RemoveChildが選択したノードの子を削除していると思います。
下の子供はいますか nodeName
それともすでに葉ですか?
編集:
実際、親の子供を削除する必要があります。次のことを試してください。
nodeName.parentNode.removeChild(nodeName)
他のヒント
ドキュメント要素から直接ノードを削除しようとしています。実際にはドキュメント要素のgreat孫(または単なる孫)です。 RemoveChild
指定した場合にのみ機能します 直接 子ども、ただの子孫ではありません。
これを試して:
nodeName.ParentNode.RemoveChild(nodeName);
(もしも Remove()
Adkinsの答えに従って存在しますが、それはより良いでしょう - しかし、私はMSDNでそのような方法を見つけることができません。)
上からではなく、すぐ近くの親から子供を削除する必要があります。
nodeName.ParentNode.RemoveChild(nodeName);
.removeChildを使用する代わりに、あなたが探している結果を与えるはずです。
編集::
これは、LinqからXMLを使用している場合にのみ機能することに注意してください。その後、Xnodeのバリエーションを使用して作業し、単にBlah.Removeと言うことができます。 LinqをXMLに使用していない場合は、その原因を調べることをお勧めします。
所属していません StackOverflow