Angenommen, Sie haben dieses XML in einer T-SQL-Variablen - dann könnten Sie dieses Code-Snippet verwenden:
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)
Dies gibt mir eine Ausgabe von:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Der Ansatz ist der folgende:
-
holen Sie sich die Liste von
<item>
Knoten unter<root>
als Ihre erste "Liste von XML-Knoten" mit dem ersten.nodes()
XQuery-Methode und extrahieren Sie den Wert von<key>
XML-Element in diesem XML-Fragment inKey1
-
holen Sie sich die "verschachtelte" Liste von XML-Knoten innerhalb dieses XML-Fragments, indem Sie
value/params/item
verwenden XPath, um die untergeordneten Zeilen abzurufen – und die Werte aus<key>
zu extrahieren und<value>
aus diesen verschachtelten untergeordneten XML-Fragmenten inKey2
undItemValue