Posso consultar XML, que definiu a tag xmlns com expressão de tabela comum
DECLARE @XML XML
SET @XML =
'<NodeA xmlns="https://XYZ.xsd">
<NodeB verzePis="">
<NodeC1 attrA="Hello" />
<NodeC2 attrA="World" />
</NodeB>
</NodeA>
'
;WITH XMLNAMESPACES(DEFAULT 'https://XYZ.xsd')
SELECT
r.value('fn:local-name(.)', 'nvarchar(50)') as SectionName,
r.value('@attrA','NVARCHAR(250)') attrA
FROM @XML.nodes('/NodeA/NodeB/*') AS t(r);
Mas e se o XML de origem não contiver nenhuma tag xmlns? Como posso solucionar o namespace ausente?
Você pode apenas remover a
WITH XMLNAMESPACES(DEFAULT 'https://XYZ.xsd')
parte:produz
Observe
WITH XMLNAMESPACES
que não cria uma expressão de tabela comum, apenas declara um namespace opcional