Funzione RemoveChild (nodo XmlNode) non è riuscito in C #
-
02-10-2019 - |
Domanda
Quando provo a rimuovere alcuni dei mio elemento figlio con RemoveChild (). Ma gettare eccezione. Ho attaccato il mio codice qui sotto.
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
Mostra errore qui sotto:
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.
Come posso rimuovere il nodo?
[Aggiornamento]
VS2005 & .NET 2.0 utilizzato.
Soluzione
Credo .RemoveChild sta rimuovendo il figlio del nodo selezionato.
Ci sono dei bambini di età inferiore nodeName
o è la foglia già?
Modifica:
In realtà è necessario rimuovere il Bambino della Capogruppo, provare quanto segue:
nodeName.parentNode.removeChild(nodeName)
Altri suggerimenti
Si sta cercando di rimuovere un nodo direttamente dal elemento del documento, quando in realtà è un pronipote del elemento del documento (o forse solo un nipote). RemoveChild
funziona solo quando si specifica un diretta ??em> bambino, non solo qualsiasi discendente.
Prova questo:
nodeName.ParentNode.RemoveChild(nodeName);
(Se Remove()
esiste come per ogni risposta Adkins', che sarebbe meglio -. Ma non riesco a trovare un tale metodo in MSDN)
Si dovrebbe rimuovere figlio dal padre immediato, non dall'alto:
nodeName.ParentNode.RemoveChild(nodeName);
Invece di usare .RemoveChild provare solo utilizzando .Rimuovere Che dovrebbe darvi il risultato che si sta cercando.
Modifica ::
Si noti che questo funziona solo se si utilizza LINQ to XML. Poi si sarebbe lavorare con qualche variazione di un XNode e può semplicemente dire blah.Remove e dovrebbe fare il trucco. Se non si utilizza LINQ to XML vorrei suggerire cercando in quella causa è sorprendente.