私は次のような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)