0
這可能是一個簡單的問題,很抱歉。爲openxml設置默認的xml命名空間
我有一個與這些線開出的XML文件:
<?xml version="1.0" encoding="windows-1252"?>
<MyData xmlns="http://xyz.com.au/schema/v1_10/MyData">
<data>
<patient>
<link_id>{764C733A-64DE-4663-82B1-1A23B95FDFE2}</link_id>
我把它加載到一個XML數據類型的表是這樣的:
CREATE TABLE MMD (
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME)
INSERT INTO MMD (XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK 'C:\Test.xml', SINGLE_BLOB) AS x;
我再查詢它像這樣:
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM MMD
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
;with xmlnamespaces (default 'http://xyz.com.au/schema/v1_10/MyData/')
SELECT distinct(link_id)
FROM OPENXML(@hDoc, 'MyData/data/patient')
WITH
(link_id [varchar](50) 'link_id') t
EXEC sp_xml_removedocument @hDoc
GO
該查詢返回0行。但是,如果我這樣從文件的第二行中刪除命名空間:從:
<MyData xmlns="http://xyz.com.au/schema/v1_10/MyData">
到:
<MyData>
然後我得到我所期望的結果!
我讀過所有的職位,並嘗試了各種語法的變化沒有成功。
在此先感謝您的幫助。
布賴恩
感謝試圖幫助,但我與語法掙扎。我的背景不是MS T-SQL。我可能需要去看書。 –