Si votre document XML contient des espaces de noms XML, vous devez en tenir compte dans vos requêtes !
Donc, si votre XML ressemble à votre échantillon, alors vous avez besoin :
-- 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 si vous préférez avoir un contrôle explicite sur l'espace de noms XML à utiliser (par exemple, si vous en avez plusieurs), utilisez des préfixes d'espace de noms 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)