質問

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に使用していない場合は、その原因を調べることをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top