niedziela, 5 maja 2013

Wynik zapytania SQL jako XML

Czasami zdarza się, że dane wyciągane z bazy potrzebuję otrzymać w formacie XML - np do dalszej obróbki.
W aplikacji korzystając z LINQ2XML można szybko przekształcić dane pobierane z bazy do formatu XML.
Można także skorzystać z tego co oferuje sama baza danych i skorzystać ze składni FOR XML.

Aby pobrać dane z tabeli Customer bazy AdventureWorksLT stosujemy następujące zapytanie:


SELECT *FROM SalesLT.Customer



Aby dane otrzymać jako XML stosujemy następujące zapytanie:

SELECT *FROM SalesLT.CustomerFOR XML AUTO

W przypadku zapytania FOR XML dostępne są 4 tryby:
  • RAW - generowane są pojedyncze elementy row dla każdego wiersza pobranego z bazy
  • AUTO - generowane wiersze są automatycznie na podstawie struktury zapytania
  • EXPLICIT - pozwala na zmienienie kształtu w jakim otrzymamy XML-a (np. zastosowanie elementów zamiast atrybutów itp.)
  • PATH - uproszczona forma EXPLICIT

Najlepsze efekty udało mi się uzyskać dzięki PATH:

SELECT *FROM SalesLT.CustomerFOR XML Path('Customer')

Wynik:


Jak widać każdy wiersz to element typu Customer. Możemy także dodać korzeń dokumentu XML za pomocą dyrektywy ROOT('root')

Więcej o generowaniu XMLi z zapytań można poczytać na poniższych stronach msdn:

http://msdn.microsoft.com/en-us/library/ms178107.aspx
http://msdn.microsoft.com/en-us/library/bb510462.aspx

Brak komentarzy:

Prześlij komentarz