Как удалить XmlElement?(XmlNode против XmlElement) - PullRequest
0 голосов
/ 06 декабря 2010

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

нет метода Remove.

Я гуглил и нашел это.

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

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

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

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

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

if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl);
1 голос
/ 06 декабря 2010

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

1 голос
/ 06 декабря 2010

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

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

...