Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Interrogazione di tipi di dati XML con attributi di nodo xmlns

Se il tuo documento XML ha spazi dei nomi XML, devi prenderli in considerazione nelle tue query!

Quindi, se il tuo XML assomiglia al tuo campione, allora hai bisogno di:

-- 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)

Oppure, se preferisci avere un controllo esplicito su quale spazio dei nomi XML utilizzare (ad es. se ne hai più), utilizza i prefissi dello spazio dei nomi XML:

-- 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)