我有一个场景,我在sql表中获得的XML数据可以包含与特定元素相关的动态属性列表。例如,XML可以是
<XML><row ID = 1 x1="x1value" x2 = "x2value" /></XML>
<XML><row ID = 10 X3 = "x3value" x10 = "x10value" /></XML>
<XML><row ID = 5 x1="x1value2" x10 = "x10value2" /></XML>
我必须单独处理每个XML数据,并使用MSSQL查询(如键值对)动态切碎并获取每个属性的值到临时表中或将其展平为关系模型,如
SELECT x1, x2 INTO #temp FROM xml...
如果您了解XML中存在的属性,我研究的所有示例都会显示提取方式。在我的例子中,我不知道元素中存在哪些属性。
非常感谢任何帮助:)
答案 0 :(得分:2)
试试这个,
DECLARE @XML as xml
SET @XML = '<XML><row ID="1" x1="x1value" x2="x2value" /></XML>'
SELECT
k.value('@ID','BIGINT') AS ID,
b.value('local-name(.)','VARCHAR(50)') AS ColumnName, -- get attribute name
b.value('.','VARCHAR(MAX)') AS Value -- get attribute value
FROM @XML.nodes('/XML/row') p(k)
CROSS APPLY k.nodes('@*') a(b)
ID ColumnName Value
--- ------------ -----------
1 ID 1
1 x1 x1value
1 x2 x2value
希望这有帮助