Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abfragen von XML-Datentypen, die xmlns-Knotenattribute haben

Wenn Ihr XML-Dokument XML-Namespaces hat, müssen Sie diese in Ihren Abfragen berücksichtigen!

Wenn Ihr XML also wie Ihr Beispiel aussieht, brauchen Sie:

-- define the default XML namespace to use
;WITH XMLNAMESPACES(DEFAULT 'bar')
SELECT   
    x.u.value('Name[1]', 'varchar(100)') as Name
from 
    @XMLDOC.nodes('/Feed/Product') x(u)

Oder wenn Sie es vorziehen, explizite Kontrolle darüber zu haben, welcher XML-Namensraum verwendet werden soll (z. B. wenn Sie mehrere haben), verwenden Sie XML-Namensraum-Präfixe:

-- define the XML namespace 
;WITH XMLNAMESPACES('bar' as b)
SELECT   
    x.u.value('b:Name[1]', 'varchar(100)') as Name
from 
    @XMLDOC.nodes('/b:Feed/b:Product') x(u)