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.

È stato utile?

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 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top