Giả sử bạn có XML này trong một biến T-SQL - thì bạn có thể sử dụng đoạn mã này:
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)
Điều này cho tôi kết quả là:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Cách tiếp cận như sau:
-
lấy danh sách
<item>
các nút dưới<root>
là "danh sách các nút XML" đầu tiên của bạn với.nodes()
đầu tiên Phương thức XQuery và trích xuất giá trị của<key>
Phần tử XML trong phân đoạn XML đó thànhKey1
-
lấy danh sách các nút XML "lồng nhau" bên trong phân đoạn XML đó, sử dụng
value/params/item
XPath, để lấy các hàng con - và trích xuất các giá trị từ<key>
và<value>
từ các đoạn XML con lồng nhau đó vàoKey2
vàItemValue