当我尝试用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)

其他提示

当它实际上是文档元素的曾孙(或者只是孙子)时,您正在尝试直接从文档元素中删除一个节点。 RemoveChild 仅在指定一个 直接的 孩子,不仅是任何后代。

试试这个:

nodeName.ParentNode.RemoveChild(nodeName);

(如果 Remove() 根据Adkins的回答存在,这会更好 - 但我在MSDN中找不到这样的方法。)

您应该从直系亲属中删除孩子,而不是从顶部删除:

nodeName.ParentNode.RemoveChild(nodeName); 

而不是使用.removechild尝试仅使用.emove,以便您可以为您提供所需的结果。

编辑::

请注意,仅当您将LINQ用于XML时才有效。然后,您将使用Xnode的一些变体,可以简单地说Blah.emove,它应该可以解决问题。如果您不将LINQ用于XML,我建议您研究一下,这是很棒的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top