繁体   English   中英

函数RemoveChild(XmlNode节点)在C#中失败

[英]Function RemoveChild(XmlNode node) failed in C#

当我尝试使用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或者它已经是叶子了?

编辑:

实际上你需要删除Parent的Child,尝试以下方法:

nodeName.parentNode.removeChild(nodeName)

您正试图直接从文档元素中删除节点,当它实际上是文档元素的曾孙(或者可能只是孙子)时。 RemoveChild仅在指定直接子项时才有效,而不仅仅是任何后代。

尝试这个:

nodeName.ParentNode.RemoveChild(nodeName);

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

您应该从直接父级移除子级,而不是从顶级移除子级:

nodeName.ParentNode.RemoveChild(nodeName); 

而不是使用.RemoveChild尝试使用.Remove这应该会给你你想要的结果。

编辑::

请注意,这仅适用于使用Linq to XML的情况。 那么你将使用XNode的一些变体,可以简单地说blah.Remove它应该做的伎俩。 如果你没有使用Linq to XML,我会建议调查这个因为它太棒了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM