Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Извлечь атрибуты и значения из XML тега  [new]
slabur
Member

Откуда: Москва
Сообщений: 40
Други,
подскажите, как извлечь атрибуты и значения из XML тега?
например,
@xml='<GENL Number="5" Total="12"><Tag20C></GENL>'
Требуется:
TagName TagValue
"Number" 5
"Total" 12

т.е. элемент (GENL) может быть любой, и набор атрибутов может быть разным по количеству и составу.

select
Element = sw.query('local-name()') --<< GENL
, TagName = ???
, TagValue = ???
from @xml.nodes('*') a(sw)
20 дек 17, 15:15    [21048899]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь атрибуты и значения из XML тега  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
DECLARE @xml XML = N'<GENL Number="5" Total="12"></GENL>'

SELECT TagName = t.c.value('local-name(.)', 'SYSNAME')
     , TagValue = t.c.value('.', 'NVARCHAR(MAX)')
FROM @xml.nodes('GENL/@*') t(c)
20 дек 17, 15:18    [21048911]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь атрибуты и значения из XML тега  [new]
slabur
Member

Откуда: Москва
Сообщений: 40
AlanDenton,
Большое спасибо!
Работает.
20 дек 17, 15:22    [21048932]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь атрибуты и значения из XML тега  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Пожалуйста. Если нужно вложенные теги тоже обрабатывать, то вот вариант:

DECLARE @xml XML = N'<GENL Number="5" Total="12" /><TEST Value="5" /><TEST2 Text="6"><TEST3 Value="7" /></TEST2>'

SELECT TagName = t.c.value('local-name(.)', 'SYSNAME')
     , TagValue = t.c.value('.', 'NVARCHAR(MAX)')
     , ParentTag = t.c.value('local-name(../.)', 'SYSNAME')
FROM @xml.nodes('//*/@*') t(c)
20 дек 17, 15:27    [21048962]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь атрибуты и значения из XML тега  [new]
slabur
Member

Откуда: Москва
Сообщений: 40
AlanDenton,
Спасибки :-)
20 дек 17, 15:38    [21049007]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить