Prosiłbym o jakiś przykład.
Prosiłbym o jakiś przykład.
Używając obiekt kontextowy EDM i zapytania LINQ, możemy wylistować kolekcję encji z bazy danych. Za pomocą klasy XElement możemy kolekcję encji zapisać do pliku xml. XElement posiada prosty konstruktor (tag, wartość):
BazaEntity objctx = new BazaEntity(); Xelement xel = new XElement("Główny", XElement("Blog", from a in objctx.Blogs.ToList() select new XElement("ID", a.id_blog), new XElement("Nazwa", a.nazwa))); xel.Save("plik.xml");
Nasz plik XML będzie wyglądał przykładowo:
<?xml version="1.0" encoding="UTF-8"?> <Główny> <Blog> <ID>1</ID> <Nazwa>Blog nr 1</Nazwa> </Blog> <Blog> <ID>2</ID> <Nazwa>Blog nr 2</Nazwa> </Blog> <Blog> <ID>3</ID> <Nazwa>Blog nr 3</Nazwa> </Blog> </Główny>
Inny sposób to wykorzystanie wbudowanego mechanizmu w SQL Server, a dokładnie klauzuli FOR XML.
Umożliwia ona zamianę danych relacyjnych na postać dokumentu XML.
Na przykład:
SELECT Cust.CustomerID, OrderHeader.CustomerID, OrderHeader.SalesOrderID, OrderHeader.Status, Cust.CustomerType FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader WHERE Cust.CustomerID = OrderHeader.CustomerID ORDER BY Cust.CustomerID FOR XML AUTO
Otrzymamy wynik:
<Cust CustomerID="1" CustomerType="S"> <OrderHeader CustomerID="1" SalesOrderID="43860" Status="5" /> <OrderHeader CustomerID="1" SalesOrderID="44501" Status="5" /> <OrderHeader CustomerID="1" SalesOrderID="45283" Status="5" /> <OrderHeader CustomerID="1" SalesOrderID="46042" Status="5" /> </Cust>
Jak widać na tym przykładzie, rekordy zostały zamienione na elementy, a wartości w kolumnach na artrybuty.
Jeśli bardziej odpowiada nam postać elementowa, to możemy dodać słowo klucz ELEMENTS. Wówczas rekordy i kolumny zostaną zamienione na zagnieżdżone elementy, dokumenty XML.
Przykład:
SELECT Cust.CustomerID, OrderHeader.CustomerID, OrderHeader.SalesOrderID, OrderHeader.Status, Cust.CustomerType FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader WHERE Cust.CustomerID = OrderHeader.CustomerID ORDER BY Cust.CustomerID FOR XML AUTO, ELEMENTS
Rezultat:
<Cust> <CustomerID>1</CustomerID> <CustomerType>S</CustomerType> <OrderHeader> <CustomerID>1</CustomerID> <SalesOrderID>43860</SalesOrderID> <Status>5</Status> </OrderHeader> ... </Cust> ...
Dzięki dodatkowym przełącznikom możemy jeszcze bardziej dopasować XML do naszych wymagań (namespace, nazwy elementów
itd).
Polecam artykuł: http://msdn.microsoft.com/en-us/library/ms178107.aspx
Tak otrzymany dokument możemy pobrać do aplikacji napisanej w C# jako dane tekstowe i zapisać do pliku.
Jeśli chodzi o sam zapis do pliku to można napisać aplikację np. w C# lub skorzystać z rowiązania zapronowanym w innym wątku:
https://quorum.akademiq.pl/discussion/2935/zapisywanie-wynikow-kwerendy-do-pliku#Comment_4154