LINQ to XML, cz. 2 - Wstęp do zapytań
Pierwszy artykuł z serii zawierał wprowadzenie do technologii Linq to Xml oraz pokazywał w jaki sposób tworzyć lub ładować dokumenty Xmlowe. Oczywiście samo załadowanie dokumentu do pamięci to dopiero wstęp do prawdziwej zabawy. Ponieważ jedną z najczęściej wykonywanych operacji jest wybieranie z dokumentu węzłów i/lub atrybutów zobaczmy jak to się robi w Linq to Xml (w przykładach użyjemy dokument z pierwszego artykułu cyklu który wygląda tak:
<?xml version="1.0"?>
<wycieczka>
<segment>
<wylot kod-lotniska="SEA" data="2008-10-09T15:25Z">
Seattle-Tacoma International</wylot>
<przylot kod-lotniska="LHR" data="2008-10-10T02:20Z">
London Heathrow</przylot>
</segment>
<segment>
<wylot kod-lotniska="LHR" data="2008-10-10T05:35Z">
London Heathrow</wylot>
<przylot kod-lotniska="WRO" data="2008-10-10T10:05Z">
Wroclaw Strachowice</przylot>
</segment>
</wycieczka>
).
Na początku coś bardzo prostego. Wybierzmy element root z wejściowego dokumentu.
XDocument xDoc = XDocument.Parse(xmlString);
XElement root = xDoc.Root;
To rzeczywiście nie było zbyt skomplikowane. Sprobujmy więc cos bardziej zaawansowanego - wybierzmy z dokumentu wszystkie elementy <wylot>. Zapytanie może wyglądać tak:
var wyloty =
xDoc.Root.Elements("segment").Elements("wylot");
Ale może też wyglądać tak:
var wyloty = xDoc.Descendants("wylot");Żeby wypisać wynik na ekranie można posłużyć się następującą pętlą:
foreach(var wylot in wyloty) {
Console.WriteLine(wylot);
}
