باز کردن فایل های XML در SQL Server
یکی از قابلیت های SQL Server کار کردن با مستندات XML هست، یعنی شما می توانید خروجی کوئری ها را تبدیل به مستندات XML کرده یا یک فایل XML را خوانده و محتویات آن را پردازش کنید. در این نکته قصد داریم تا با نحوه باز کردن یک فایل XML و پردازش آن آشنا شویم. فرض کنید که فایل XML شما با نام data.xml و در درایو D ذخیره شده و شامل محتویات زیر است:
<Customers> <Customer Id="1"> <FirstName>Hossein</FirstName> <LastName>Ahmadi</LastName> <Address Zipcode="1111111111"> <Country>Iran</Country> <State>Alborz</State> <City>Karaj</City> </Address> </Customer> <Customer Id="2"> <FirstName>Mohammad</FirstName> <LastName>Nasiri</LastName> <Address Zipcode="2222222222"> <Country>Iran</Country> <State>Alborz</State> <City>Mohammad Shahr</City> </Address> </Customer> </Customers>
جهت باز کردن این فایل شما باید ابتدا یک متغیر از نوع xml تعریف کرده و بعد بوسیله عبارت OPENROWSET فایل مورد نظر را باز کنید و محتویات آن را در متغیر تعریف شده ذخیره کنید:
declare @xmlDoc xml; select @xmlDoc = p from OPENROWSET(BULK'd:\data.xml',SINGLE_BLOB) as T(P); select @xmlDoc;
با اجرای اسکریپت بالا محتویات فایل XML بوسیله دستور select در خروجی نمایش داده می شود. در ادامه می توان متغیر xmlDoc را در عبارت OPENXML برای پردازش محتویات آن استفاده کرد:
declare @xmlDoc xml; select @xmlDoc = p from OPENROWSET(BULK'd:\data.xml',SINGLE_BLOB) as T(P); declare @handler int; exec sp_xml_preparedocument @handler out,@xmlDoc; select * from openxml(@handler,'Customers/Customer/Address') with ( [FirstName] nvarchar(200) '../FirstName', [ZipCode] nvarchar(10) '@Zipcode', [Country] nvarchar(200) 'Country' )
البته از openrowset برای باز کردن فایل های دیگر هم می توان استفاده کرد که استفاده آن مشابه اسکریپتی است که در ابتدای نکته گفته شد