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