Seleccionar tagName y tagValue de Xml.
Con una consulta en Sql Server 2008 me gustaría extraer tagName y tagValue de un xml, pero sólo puedo recuperar el tagValue.
Me gustaría extraerlos dinámicamente, ya que los nombres de las etiquetas podrían cambiar.
Cualquier ayuda es apreciada.
Este es el código:
DECLARE @test AS XML=’
SELECT
PROPERTY.N.value(‘local-name(.)’, ‘varchar(max)’) AS TagName
,PROPERTY.N.value(‘.’, ‘nvarchar(100)’) AS TagValue
FROM
(SELECT CAST(@test AS XML) Prop ) XML
OUTER APPLY XML.Prop.nodes(‘/properties/*’) AS PROPERTY(N);
davy.ai
Para extraer tanto el nombre como el valor de la etiqueta desde el XML de forma dinámica (en caso de que los nombres de las etiquetas cambien), puedes usar la función
local-name()
en combinación con la funciónvalue()
.Aquí tienes un ejemplo de consulta que extraerá el nombre y valor de la etiqueta para cada propiedad en el XML:
En esta consulta, la función
local-name()
se utiliza para extraer dinámicamente el nombre de la etiqueta para cada propiedad, mientras que la funciónvalue()
se utiliza para extraer el valor de la etiqueta.El resultado de esta consulta para el XML dado será:
Ten en cuenta que para la propiedad
MoreDIfficult
, que contiene una estructura anidada, el nombre de la etiqueta sigue siendo extraído de forma dinámica comoproperty
. Si necesitas extraer el nombre de la etiqueta de la estructura anidada, puedes modificar la expresión xpath en la funciónnodes()
en consecuencia.