函数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)
其他提示
当它实际上是文档元素的曾孙(或者只是孙子)时,您正在尝试直接从文档元素中删除一个节点。 RemoveChild
仅在指定一个 直接的 孩子,不仅是任何后代。
试试这个:
nodeName.ParentNode.RemoveChild(nodeName);
(如果 Remove()
根据Adkins的回答存在,这会更好 - 但我在MSDN中找不到这样的方法。)
您应该从直系亲属中删除孩子,而不是从顶部删除:
nodeName.ParentNode.RemoveChild(nodeName);
而不是使用.removechild尝试仅使用.emove,以便您可以为您提供所需的结果。
编辑::
请注意,仅当您将LINQ用于XML时才有效。然后,您将使用Xnode的一些变体,可以简单地说Blah.emove,它应该可以解决问题。如果您不将LINQ用于XML,我建议您研究一下,这是很棒的。
不隶属于 StackOverflow