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");