Om du antar att du har denna XML i en T-SQL-variabel - då kan du använda det här kodavsnittet:
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)
Detta ger mig en utdata av:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Tillvägagångssättet är följande:
-
ta tag i listan med
noder under
som din första "lista över XML-noder" med den första.nodes()
XQuery-metoden och extrahera värdet för
XML-element i det XML-fragmentet tillKey1
-
ta tag i den "kapslade" listan med XML-noder inuti det XML-fragmentet med
värde/params/objekt
XPath, för att hämta de underordnade raderna - och extrahera värdena från
ochfrån dessa kapslade underordnade XML-fragment till Key2
ochItemValue