XDocument удаление узла - PullRequest
       12

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

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

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

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

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

....

</Snippets>

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

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

Ответы [ 2 ]

5 голосов
/ 19 декабря 2010

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

xdoc.Descendents("Snippet").Where(xe => xe.Attribute("name") != null 
    && xe.Attribute("name").Value == "foreach").Single().Remove()
2 голосов
/ 19 декабря 2010

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

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