Noel Macara Ответов: 1

Может ли кто-нибудь сказать мне, как удалить определенный узел из XML-файла?


    bool retval = false;
    XmlDocument doc = new XmlDocument();
    try
    {
        doc.Load(frmMain.FetchFileName(sFromFile));
        XmlNodeList nodes = doc.GetElementsByTagName("Type");
        foreach (XmlNode node in nodes)
        {
            if (node.FirstChild.InnerText == "Birthday")
            {
                //  Have found the right node. ? How do I delete it?
                //  node.RemoveChild(node.FirstChild);   Not like this
                //  doc.RemoveChild(node);               Nor like this
                //  node.RemoveChild(node);              Nor like this
                //  node.RemoveAll();                   // This gives no error
                node.ParentNode.RemoveChild(node);      // This gives no error

                doc.Save(sFromFile);
                retval = true;
                break;
            }

        }
    }
    catch
    {
        MessageBox.Show("Exception!!!", "Oops!");
        return false;
    }

    return retval;
}


Что я уже пробовал:

Я попробовал код выше, как вы можете видеть, первые три попытки, которые я сделал, потерпели неудачу.
Две попытки выполнили код без жалоб (прокомментировано это не дает никакой ошибки), но
на самом деле ничего не удалил из файла. Вот фрагмент xml - файла.

Код ищет и находит узел дня рождения, который я пытаюсь удалить
так что впоследствии файл должен выглядеть вот так:
<?xml version="1.0"?>
  <importanttype>
    <type>
      <name>Appointment
        <predefined>Yes
   .
   .       a bunch of other nodes in here
   .
    <type>
      <name>Holiday
      <predefined>Yes



Я совершенно сбит с толку. Кто-нибудь может мне помочь - пожалуйста.
Благодарю тебя в предвкушении, Ноэль.

1 Ответов