[英]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.