我有类似于以下的 XML:
DECLARE @XML AS XML =
'<RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SubElement xmlns="http://foobar">
<foo1>bar1</foo1>
</SubElement>
</RootElement>'
我正在尝试使用以下 SQL 对其进行解析:
; WITH XMLNAMESPACES(DEFAULT 'http://foobar')
SELECT
f.x.value('foo1[1]', 'varchar(10)')
from
@xml.nodes('/RootElement/SubElement') as f(x)
但这似乎不起作用。SubElement 节点上的 XML 命名空间是否会导致问题?我问是因为以下配置有效:
DECLARE @XML AS XML =
'<RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SubElement>
<foo1>bar1</foo1>
</SubElement>
</RootElement>'
SELECT
f.x.value('foo1[1]', 'varchar(10)')
from
@xml.nodes('/RootElement/SubElement') as f(x)
供参考:
select @@VERSION
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)