2010-12-06 3 views
0

Я пытаюсь удалить некоторые XmlElements из моего Xml-файла в C# 2.0. Я могу удалить его с помощью метода XmlNode.Remove(). Но нет Remove метода в XmlElement.Как удалить XmlElement? (XmlNode vs XmlElement)

Я googled и нашел это.

элементы - это тип узла. Фактически, если вы посмотрите на элементы XmlNode и XmlElement в .NET Framework, вы увидите, что они очень похожи, но XmlElement имеет больше возможностей. Он наследует XmlNode и затем настраивается. Это связано с тем, что элемент более специализирован. Узел более общий по объему. Документ представляет собой узел, команда обработки - это узел и т. Д. Элементы разные. Если вы посмотрите на свойство XmlNodeType элемента, вы увидите, что это элемент, один из многих типов узлов, которые вы найдете.

Если элемент является типом узла, то почему я не могу использовать команду remove. Тогда как?

XmlDocument doc_AlarmSettingUp = new XmlDocument(); 
doc_AlarmSettingUp.Load(xmlFile_AlarmSettingUp); 
XmlNode rootDest = doc_AlarmSettingUp.SelectSingleNode("/Equipment/AlarmSettingUp/EnabledALIDs"); 
foreach (XmlElement el_AlarmSettingUp in doc_AlarmSettingUp.SelectNodes("/Equipment/AlarmSettingUp/EnabledALIDs/ALID")) 
{ 
    XmlElement outEl; 
    if (lookup.TryGetValue(el_AlarmSettingUp.GetAttribute("alid"), out outEl)) 
    { 
     // exists; element now in "other" 
     // Console.WriteLine("exists"); 
    } 
    else 
    { 
     // doesn't exist 
     Console.WriteLine("doesn't exist"); 
     // Then How can I remove element with an element method? Thanks. 
    } 
} 

ответ

2

Следующий код должен работать на любой XmlElement:

if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl); 
+0

Это совершенно то, что мне нужно. Благодарю. – 2010-12-06 08:59:03

1

Что вы пытаетесь сделать с указанным кодом? Насколько я могу судить по этому вопросу.

В чем проблема с вызовом Удалить на XmlElement (который является XmlNode)?

+0

Я пытаюсь найти способ удалить `XmlElement`. Спасибо за ваш ответ. – 2010-12-06 09:00:02

1

Насколько я вижу, XmlNode не имеет метода Remove(). Он имеет метод RemoveChild(XmlNode), а также XmlElement. Вы должны использовать RemoveChild родительского элемента для удаления дочернего элемента.

+0

Извините за мою ошибку. Я должен написать весь оператор как `XmlNode.RemoveChile (XmlNode)`; – 2010-12-06 08:58:42