Funktion RemoveChild (XmlNode node) fehlgeschlagen in C #
-
02-10-2019 - |
Frage
Wenn ich versuche, etwas von meinem Kind-Elemente mit RemoveChild () zu entfernen. Aber werfen Ausnahme. Ich legte meinen Code unten.
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
anzeigen Fehler unter:
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.
Wie kann ich entfernen Sie den Knoten?
[Update]
VS2005 & .NET 2.0 verwendet wird.
Lösung
Ich glaube .RemoveChild das Kind des Knotens Entfernen Sie ausgewählt haben.
Gibt es Kinder unter nodeName
oder ist es das Blatt schon?
Edit:
Eigentlich müssen Sie das Kind der Mutter zu entfernen, gehen Sie folgendermaßen vor:
nodeName.parentNode.removeChild(nodeName)
Andere Tipps
Sie versuchen, einen Knoten direkt aus dem Dokumentelement zu entfernen, wenn es tatsächlich ein Urenkel des Dokumentelements (oder vielleicht auch nur ein Enkelkind). RemoveChild
funktioniert nur, wenn Sie einen direkt angeben Kind, nicht nur irgendeinen Nachkommen.
Versuchen Sie diese:
nodeName.ParentNode.RemoveChild(nodeName);
(Wenn Remove()
nach Adkins' Antwort besteht, das wäre besser -. Aber ich kann ein solches Verfahren in MSDN nicht finden)
Sie sollen Kind aus den unmittelbar Eltern entfernen, nicht von oben:
nodeName.ParentNode.RemoveChild(nodeName);
Statt mit .RemoveChild versuchen .Remove nur verwenden, sollten Sie geben das Ergebnis die Sie suchen.
Bearbeiten ::
Beachten Sie, dass dies nur funktioniert, wenn Sie Linq to XML verwenden. Dann würden Sie mit einer gewissen Variation eines XNode arbeiten und kann einfach blah.Remove sagen und es sollte den Trick tun. Wenn Sie nicht Linq to XML verwenden, würde ich vorschlagen, in dieser Sache suchen es erstaunlich ist.