【发布时间】:2015-11-06 08:25:48
【问题描述】:
这可能是一个简单的问题,抱歉。
我有一个以这些行开头的 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 行。但是,如果我像这样从文件的第二行中删除命名空间:from:
<MyData xmlns="http://xyz.com.au/schema/v1_10/MyData">
到:
<MyData>
然后我得到了我期望的结果!
我已阅读所有帖子并尝试了各种语法变体,但均未成功。
提前感谢您的帮助。
布赖恩
【问题讨论】:
标签: xml tsql xml-namespaces