Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consultando tipos de dados XML que possuem atributos de nó xmlns


Se o seu documento XML tiver namespaces XML, você precisará considerá-los em suas consultas!

Portanto, se seu XML se parece com sua amostra, você precisa:
-- 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)

Ou se você preferir ter controle explícito sobre qual namespace XML usar (por exemplo, se você tiver vários), use prefixos de namespace 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)