<?xml version="1.0" encoding="utf-8" ?> <peaks> <peak> <name>Rysy</name> <height unit="mnpm">2499</height> </peak> <peak> <name>Swinica</name> <height unit="mnpm">2301</height> </peak> <peak> <name>Kasprowy Wierch</name> <height unit="mnpm">1987</height> </peak> <peak> <name>Szpiglasowy Wierch</name> <height unit="mnpm">2172</height> </peak> </peaks>
Plik taki możemy odpytywać przy użyciu zapytań LINQ, np.:
//Queries XDocument xmlDocument = XDocument.Load("tatra.xml"); var twoThousand = from peak in xmlDocument.Root.Elements("peak") let height = int.Parse(peak.Element("height").Value) where height > 2000 select peak.Element("name").Value; foreach (var peak in twoThousand) Console.WriteLine(peak);
LINQ to XML to nie tylko odczyt, ale także wygodna możliwość modyfikacji. Aby dodać nowy szczyt wystarczy skorzystać z klasy XElement, dla której jednym z argumentów jest params umożliwiający budowanie drzewa. Przykład poniżej:
//Modifying var peaks = xmlDocument.Root; peaks.Add(new XElement("peak", new XElement("name", "Zawrat"), new XElement("height", new XAttribute("unit", "mnpm"), 2159))); xmlDocument.Save("tatra2.xml");
Również usuwanie elementów jest bardzo proste.
//Deleting var highest = peaks.Elements("peak").OrderByDescending(x => int.Parse(x.Element("height").Value)) .FirstOrDefault(); highest.Remove(); xmlDocument.Save("tatra3.xml");
Brak komentarzy:
Prześlij komentarz