LINQ to XML, cz. 1 - Wprowadzenie
Linq to Xml
LINQ (Language Integrated Query) jest zbiorem rozszerzeń platformy .NET Framework umożliwiających wykonywanie w łatwy sposób operacji na zbiorach, wyszukiwania, filtrowania czy transformacji danych. Rozszerzenia te mogą stanowić integralną część języka programowania - tak jest na przykład w przypadku języków C# 3.0 czy VB.NET 9.0 gdzie składnia zapytań LINQ jest zintegrowana ze składnią samego języka. Sposób dostępu do danych i manipulowania tymi danymi jest zazwyczaj zależny od źródła danych. Z tego względu właściwy dostęp do danych jest realizowany w technologii LINQ za pomocą tzw. providerów obsługujących konkretne źródło danych. Otwarta architektura LINQa umożliwia każdemu programiście stworzenie własnego providera. Dzięki temu dostępnych jest sporo providerów - zarówno "oficjalnych" - pochodzących od Microsoftu (np. Linq To Objects, Linq To SQL, Linq to Entities) jak i pochodzących z innych źródeł (np. Linq to Amazon czy Linq to Flickr). Xml nie gęś - swojego providera też ma. Jest to Linq To Xml czasami także nazywany XLinq.
Linq to Xml umożliwia:
- Ładowanie dokumentów Xml z zewnętrznych źródeł
- Serializacje dokumentów Xml do zewnętrznych źródeł
- Standardowe operacje na dokumentach Xml (dodawanie, usuwanie węzłów, atrybutów itp.)
- Przeszukiwanie dokumentów (zapytania LINQ)
- Walidację dokumentów za pomocą schem XSD
Podstawy
Rozpoczęcie pracy z Linq to Xml nie jest trudne. Po stworzeniu nowego (lub otwarciu istniejącego) projektu wystarczy zadeklarować użycie przestrzeni nazw System.Xml.Linq (using System.Xml.Linq;) oraz dodać referencje do biblioteki System.Xml.Linq.dll - jeśli takowa jeszcze nie istnieje. Dokument Xml można albo załadować z zewnętrznego źródła albo stworzyć bezpośrednio w programie. Na przykład - jeśli zapiszemy poniższy dokument xml:
<?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-10T010:05Z">
Wroclaw Strachowice</przylot>
</segment>
</wycieczka>
w pliku o nazwie wycieczka.xml to możemy go załadować w następujący sposób:
XDocument xDoc = XDocument.Load("wycieczka.xml");Oprócz ładowania dokumentu z pliku istnieje także możliwość załadowania dokumentu z obiektu typu TextReader lub XmlReader. Metoda Load pozwala także na przekazanie dodatkowych opcji sterujących ładowaniem dokumentu (LoadOptions).
