2 votes

Suppression d'un nœud dans un XDocument

Comment supprimer un nœud spécifique d'un XDocument chargé ? Mon document XML ressemble à ceci :

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

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

....

</Snippets>

Si je voulais supprimer uniquement le snippet foreach, comment ferais-je ? J'ai essayé doc.Descendants.Remove(), mais cela n'a pas fonctionné pour moi (le nœud n'a pas été supprimé).

Edit - sur cette note, comment puis-je également renommer le snippet et modifier les snippets par le biais du code ? Je n'ai pas encore cherché à le faire, mais une aide serait la bienvenue.

5voto

jb. Points 3469

Non testé, mais cela devrait fonctionner. Faites-moi savoir si vous voulez des explications.

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

2voto

Saeed Amiri Points 16317

Vous pouvez le faire simplement, enfin vous devez Enregistrer le fichier :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X