【问题标题】:How to get list of XML attributes in a XML node如何获取 XML 节点中的 XML 属性列表
【发布时间】:2016-09-16 13:23:23
【问题描述】:

我有一个场景,我在 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 中存在的属性,我研究的所有示例都显示了提取方法。在我的示例中,我不知道元素中存在哪些属性。

任何帮助将不胜感激:)

【问题讨论】:

    标签: sql-server xml


    【解决方案1】:

    试试这个,

    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
    

    希望对你有帮助

    【讨论】:

    • 非常感谢您的询问!!
    猜你喜欢
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多