Sql server 如何获取XML节点中的XML属性列表
我有一个场景,在这个场景中,我在sql表中获得的XML数据可以具有与特定元素相关的动态属性列表。例如,XML可以是Sql server 如何获取XML节点中的XML属性列表,sql-server,xml,Sql Server,Xml,我有一个场景,在这个场景中,我在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
<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中存在的属性,那么提取的方法。在我的示例中,我不知道元素中存在哪些属性
任何帮助都将不胜感激:)试试这个
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)
希望这有帮助非常感谢您的查询!!
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