अगर आपको केवल एक्सएमएल को स्टोर करने की जरूरत है और इसके लिए कुछ और नहीं करना है, तो इसे पूरा करने का शायद यह सबसे आसान तरीका है - सीधे सरल 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;integrated security=SSPI;"))
using (SqlCommand _cmd = new SqlCommand(query, _con))
{
_con.Open();
string result = _cmd.ExecuteScalar().ToString();
_con.Close();
File.WriteAllText(@"D:\test.xml", result);
}
यह एक फ़ाइल बनाएगा D:\test.xml
(या इसे अपने सिस्टम से मिलान करने के लिए बदलें) और उन XML टैग्स को उस फ़ाइल में डाल देंगे।
SqlCommand
ऑब्जेक्ट में एक .ExecuteXmlReader()
भी है विधि जो एक XmlReader
लौटाएगी एक्सएमएल स्कैन और हेरफेर करने के लिए ऑब्जेक्ट - न केवल एक स्ट्रिंग वापस करें। जो कुछ भी आपको सबसे ज्यादा समझ में आता है उसका प्रयोग करें!
पुनश्च:भी, FOR XML AUTO
. का आउटपुट थोड़ा है .... मान लें ... सबऑप्टिमल। यह dbo.Employee
. का उपयोग करता है चूंकि यह मुख्य XML टैग है और आगे भी... SQL Server 2008 के साथ, मैं दृढ़ता से अनुशंसा करता हूं कि आप FOR XML PATH
का उपयोग करें। इसके बजाय - यह आपको XML आउटपुट के लेआउट को बदलने और अनुकूलित करने की अनुमति देता है।
अपने मूल XML आउटपुट की तुलना FOR XML AUTO
. से करें
<dbo.Employees _x0040_ID="1" LastName="Davolio" FirstName="Nancy" Title="Sales Representative" BirthDate="1948-12-08T00:00:00" HireDate="1992-05-01T00:00:00" />
<dbo.Employees _x0040_ID="2" LastName="Fuller" FirstName="Andrew" Title="Vice President, Sales" BirthDate="1952-02-19T00:00:00" HireDate="1992-08-14T00:00:00" />
इस प्रश्न के विरुद्ध - केवल अंतर देखने के लिए:
SELECT
[EmployeeID] AS '@ID',
[LastName], [FirstName],
[Title],
[BirthDate], [HireDate]
FROM
[dbo].[Employees]
FOR XML PATH('Employee'), ROOT('Employees')
आउटपुट है:
<Employees>
<Employee ID="1">
<LastName>Davolio</LastName>
<FirstName>Nancy</FirstName>
<Title>Sales Representative</Title>
<BirthDate>1948-12-08T00:00:00</BirthDate>
<HireDate>1992-05-01T00:00:00</HireDate>
</Employee>
<Employee ID="2">
<LastName>Fuller</LastName>
<FirstName>Andrew</FirstName>
<Title>Vice President, Sales</Title>
<BirthDate>1952-02-19T00:00:00</BirthDate>
<HireDate>1992-08-14T00:00:00</HireDate>
</Employee>