XDocument удаление узла

Как удалить определенный узел из загруженного XDocument? Мой XML-документ выглядит так:

<Snippets>
  <Snippet name="if">
    <SnippetCode>      
 if (condition)
 {
 }
    </SnippetCode>
</Snippet>

<Snippets>
  <Snippet name="foreach">
    <SnippetCode>      
 ...
    </SnippetCode>
</Snippet>

....

</Snippets>

Так скажи, если бы я хотел удалить только фрагмент foreach, как бы я это сделал? Я попытался doc.Descendants.Remove(), но у меня это не сработало (узел не был удален).

Изменить - на этой заметке, как я могу также переименовать фрагмент и редактировать фрагменты с помощью кода? Я еще не изучал это, но некоторая помощь будет оценена.

2 ответа

Решение

Не проверено, но это должно работать. Дайте мне знать, если вы хотите, чтобы это объяснили.

xdoc.Descendents("Snippet").Where(xe => xe.Attribute("name") != null 
    && xe.Attribute("name").Value == "foreach").Single().Remove()

Вы можете сделать это просто, наконец, вы должны сохранить файл:

       XDocument doc = XDocument.Load("XmlFile1.xml");
        doc.Descendants("Snippet").Where(p => p.Attribute("name") != null 
                                        && p.Attribute("name").Value == "foreach")
                                        .Remove();
        doc.Save("XmlFile1.xml");
Другие вопросы по тегам