軟體開發的天空


SINCE 2004

最新回應

延續著上一篇直接使用SQL SERVER 2005 開啟XML檔案並讀取內容(一)-應用xp_cmdshell文章,我在提供另一個方法來處理XML檔,當然還有許多種方法可以做處理,等有閒時在多加補充幾個方法。

我的方法如下:
1.      應用SQL SERVER 2005 的OPENXML來處理XML內容結構,至於OPENXML的相關參數,請參考SQL SERVER Online Help。

請將以下的XML內容儲存成Root.xml檔,並置於c:\

<ROOT>
<Customer>
   <CustomerID>VINET</CustomerID>
   <ContactName>Paul Henriot</ContactName>
   <Order OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
      <OrderDetail ProductID="11" Quantity="12"/>
      <OrderDetail ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer>    
   <CustomerID>LILAS</CustomerID>
   <ContactName>Carlos Gonzlez</ContactName>
   <Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
      <OrderDetail ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>

3. 利用 SQL SERVER Management Studio來執行以下指令:

DECLARE @xmlContent VARCHAR(max)
SELECT @xmlContent = ''
CREATE TABLE #tempXML(xmlContent VARCHAR(max))
BULK INSERT #tempXML FROM 'C:\root.xml' WITH(ROWTERMINATOR = '\r\n');
SELECT @xmlContent = xmlContent FROM #tempXML
SELECT @xmlContent as xmlContent
DECLARE @XmlDocumentHandle int
EXEC sp_xml_preparedocument @XmlDocumentHandle OUTPUT, @xmlContent
SELECT    *
FROM      OPENXML (@XmlDocumentHandle, '/ROOT/Customer',2)
           WITH (CustomerID  varchar(10),
                 ContactName varchar(20))
EXEC sp_xml_removedocument @XmlDocumentHandle
DROP TABLE #tempXML

參考:http://www.builderau.com.au/architect/webservices/soa/Reading-an-XML-file-from-SQL-Server/0,339024590,339174685,00.htm


DotBlogs Tags: SQL XML

回應

目前沒有回應.

*標  題:

*姓  名:

  電子郵件: (將不會被顯示)

  個人網頁:

*回應

登入後使用進階評論

Please add 8 and 7 and type the answer here: