Hvis du kun skal gemme XML'en og ikke gøre andet ved den, er dette sandsynligvis den nemmeste måde at opnå dette på - ved at bruge et simpelt ADO.NET:
string query ="SELECT EmployeeID, LastName, FirstName, Title, BirthDate, HireDate FROM dbo.Employees FOR XML AUTO";using(SqlConnection _con =new SqlConnection("server=(local);database=Northwind; integreret sikkerhed=SSPI;")) ved hjælp af (SqlCommand _cmd =new SqlCommand(query, _con)){ _con.Open(); strengresultat =_cmd.ExecuteScalar().ToString(); _con.Close(); File.WriteAllText(@"D:\test.xml", resultat);}
Dette vil oprette en fil D:\test.xml
(eller ændre det for at matche dit system) og vil sætte disse XML-tags i den fil.
SqlCommand
objektet har også en .ExecuteXmlReader()
metode, som ville returnere en XmlReader
objekt til at scanne og manipulere XML - ikke bare returnere en streng. Brug det, der giver mest mening for dig!
PS:også output fra FOR XML AUTO
er lidt .... lad os sige ... suboptimal. Den bruger dbo.Employee
da det er det primære XML-tag og så videre... med SQL Server 2008, vil jeg kraftigt anbefale dig at se nærmere på at bruge FOR XML PATH
i stedet - det giver dig mulighed for at justere og tilpasse layoutet af XML-outputtet.
Sammenlign dit originale XML-output med FOR XML AUTO
mod denne forespørgsel - bare for at se forskellen:
VÆLG [Medarbejder-ID] SOM '@ID', [Efternavn], [Fornavn], [Titel], [Fødselsdato], [Ansættelsesdato]FRA [dbo].[Medarbejdere]FOR XML PATH('Medarbejder' ), ROOT('Medarbejdere')
Output er:
Davolio Nancy Sælger 1948-12-08T00 :00:00 1992-05-01T00:00:00 Fuldstændig Andrew FirstName> Vice President, Sales 1952-02-19T00:00:00 1992-08-14T00:00:00