Вопрос

Когда я пытаюсь удалить часть моего детского элемента с помощью 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() Существует в соответствии с ответом Адкинса, это было бы лучше, но я не могу найти такой метод в MSDN.)

Вы должны снять ребенка с непосредственного родителя, а не сверху:

nodeName.ParentNode.RemoveChild(nodeName); 

Вместо использования .RemoveChild попробуйте просто использовать .Remove, который должен дать вам результат, который вы ищете.

Редактировать::

Обратите внимание, что это работает только в том случае, если вы используете LINQ для XML. Тогда вы будете работать с некоторыми вариациями Xnode и можете просто сказать Blah.remove, и это должно сделать свое дело. Если вы не используете LINQ для XML, я бы посоветовал изучить это, потому что это удивительно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top