Ervan uitgaande dat u deze XML in een T-SQL-variabele hebt, kunt u dit codefragment gebruiken:
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)
Dit geeft me een output van:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
De aanpak is de volgende:
-
pak de lijst met
<item>
knooppunten onder<root>
als uw eerste "lijst met XML-knooppunten" met de eerste.nodes()
XQuery-methode en extraheer de waarde van de<key>
XML-element in dat XML-fragment inKey1
-
pak de "geneste" lijst met XML-knooppunten in dat XML-fragment, met behulp van de
value/params/item
XPath, om de onderliggende rijen te krijgen - en de waarden te extraheren uit<key>
en<value>
van die geneste onderliggende XML-fragmenten naarKey2
enItemValue