LINQ to XML - Einen XML Knoten aus einem vorhandenem XML Dokument löschen
Der im vorigen Artikel hinzugefügte knoten soll auch wieder entfernt werden können. Folgende paar Zeilen erledigen diese Aufgabe.
XDocument xdoc = XDocument.Load(this.XmlFilePath);
var xlayouts = from c in xdoc.Elements("layouts").Elements("layout")
where c.Attribute("folder").Value == FolderName
select c;
foreach (var xlayout in xlayouts.ToList())
xlayout.Remove();
xdoc.Save(this.XmlFilePath);
Der LINQ Query selektiert alle <layout>-Knoten innerhalb des <layouts>-Knotens, bei denen der Wert des Attributes "folder" dem der übergebenen Variable "FolderName" entspricht.
Anschließend gehe ich in der Schleife alle XElement Objekte durch und entferne sie. In der Schleife muss die XElement Auflistung in eine generische Liste konvertiert werden, damit der Löschvorgang hier funktionieren kann. Die Erklärung dazu ist in diesem MSDN Artikel zu finden: Mixed Declarative Code/Imperative Code Bugs (C#) (LINQ to XML)