Ако приемем, че имате този XML в T-SQL променлива - тогава можете да използвате този кодов фрагмент:
DECLARE @input XML = '...(your XML here).....'
SELECT
Key1 = Item.value('(key)[1]', 'int'),
Key2 = Item2.value('(key)[1]', 'int'),
ItemValue = Item2.value('(value)[1]', 'varchar(50)')
FROM
@input.nodes('/root/item') AS T(Item)
CROSS APPLY
item.nodes('value/params/item') AS T2(Item2)
Това ми дава резултат от:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Подходът е следният:
-
вземете списъка с
възли под
като вашия първи „списък с XML възли“ с първия.nodes()
XQuery метод и извлечете стойността на
XML елемент в този XML фрагмент вKey1
-
вземете „вложения“ списък с XML възли вътре в този XML фрагмент, като използвате
value/params/item
XPath, за да получите дъщерните редове - и да извлечете стойностите от
и<стойност>код> от тези вложени дъщерни XML фрагменти в
Key2
иItemValue