En supposant que vous ayez ce XML dans une variable T-SQL, vous pouvez alors utiliser cet extrait de code :
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)
Cela me donne une sortie de :
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
L'approche est la suivante :
-
récupérez la liste des
<item>
nœuds sous<root>
comme première "liste de nœuds XML" avec le premier.nodes()
Méthode XQuery et extrayez la valeur du<key>
Élément XML dans ce fragment XML dansKey1
-
récupérez la liste "imbriquée" des nœuds XML à l'intérieur de ce fragment XML, en utilisant le
value/params/item
XPath, pour obtenir les lignes enfants - et extraire les valeurs de<key>
et<value>
de ces fragments XML enfants imbriqués dansKey2
etItemValue