Pregunta

Cuando intento para eliminar parte de mi elemento hijo con removeChild (). Pero lanzar una excepción. Os adjunto mi código a continuación.

    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

Mostrar mensaje de error a continuación:

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. 

¿Cómo puedo eliminar el nodo?

[Actualización]

VS2005 y .NET 2.0 utilizado.

¿Fue útil?

Solución

Creo .RemoveChild está quitando el hijo del nodo seleccionado.

¿Hay menores nodeName o se trata de la hoja ya?

Editar:

En realidad, es necesario eliminar el Niño de la Sociedad Dominante, intente lo siguiente:

nodeName.parentNode.removeChild(nodeName)

Otros consejos

Usted está tratando de eliminar un nodo directamente desde el elemento de documento, cuando en realidad es un bisnieto del elemento de documento (o tal vez sólo un nieto). RemoveChild sólo funciona cuando se especifica un directa niño, no sólo cualquier descendiente.

Prueba esto:

nodeName.ParentNode.RemoveChild(nodeName);

(Si Remove() existe como respuesta por Adkins', eso sería mejor -. Pero no puedo encontrar un método tal en MSDN)

Se debe sacar al niño del padre inmediato, no desde arriba:

nodeName.ParentNode.RemoveChild(nodeName); 

En lugar de utilizar .RemoveChild tratar simplemente usando .Remove Eso debería darle el resultado que busca.

Editar ::

Tenga en cuenta que esto sólo funciona si está utilizando LINQ to XML. De allí tendría que estar trabajando con alguna variación de un XNode y simplemente se puede decir blah.Remove y debe hacer el truco. Si no está utilizando LINQ to XML que sugeriría mirar en esa causa es increíble.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top