• Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Artykuły .NET LINQ to XML, cz. 1 - Wprowadzenie

LINQ to XML, cz. 1 - Wprowadzenie

Email Drukuj PDF
Ocena użytkowników: / 1
SłabyŚwietny 

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).

Często zdarza się, że dokument xml jest przekazywany w postaci łańcucha znakowego (stringa). W takim przypadku dokument można załadować za pomocą funkcji Parse:

string xmlStr =
@"<?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>";
XDocument xDoc = XDocument.Parse(xmlStr);

Tak jak metoda Load także i ta funkcja pozwala na przekazanie obiektu typu LoadOptions z dodatkowymi ustawieniami wykorzystywanymi podczas parsowania wejściowego dokumentu Xml.

Dokument Xml można także stworzyć bezpośrednio w programie. Dla przykładowego dokumentu kod, który to robi wygląda następująco:

XDocument xDoc =
new XDocument(new XDeclaration("1.0", "", ""),
 new XElement("wycieczka",
  new XElement("segment",
   new XElement("wylot",
    new XAttribute("kod-lotniska", "SEA"),
    new XAttribute("data", "2008-10-09T15:25Z"),
     new XText("Seattle-Tacoma International")),
   new XElement("przylot",
    new XAttribute("kod-lotniska", "LHR"),
    new XAttribute("data", "2008-10-10T02:20Z"),
     new XText("London Heathrow"))),
  new XElement("segment",
   new XElement("wylot",
    new XAttribute("kod-lotniska", "LHR"),
    new XAttribute("data", "2008-10-10T05:35Z"),
     new XText("London Heathrow")),
   new XElement("przylot",
    new XAttribute("kod-lotniska", "WRO"),
    new XAttribute("data", "2008-10-10T010:05Z"),
     new XText("Wroclaw Strachowice")))));

Dużą zaletą Linq to Xml jest to, że w przypadku tworzenia dokumentu Xml w ten sposób kod jest o wiele bardziej przejrzysty, czytelny i o wiele krótszy niż to ma miejsce przy tworzeniu dokumentu za pomocą interfejsu Xml Dom.

Artykuł umieszczono dzięki uprzejmości xml.com.pl.

Poprawiony: środa, 15 lipca 2009 20:30  

Dodaj swój komentarz

Imię:
Adres e-mail:
Strona WWW:
Treść (możesz używać HTML):
JoomlaWatch Stats 1.2.9 by Matej Koval

Użytkownicy

Naszą witrynę przegląda teraz 4 gości