【问题标题】:Parse XML Without Knowing The Schema在不知道架构的情况下解析 XML
【发布时间】:2016-06-17 08:19:17
【问题描述】:

使用 SQL Server 2008 我想将下面的 XML 转换为下面的表结构。 XML 由第三方提供,无法更改,除了 recordid 之外,每个表都有一个未知的元素列表。

DECLARE @xml XML = '
<NewDataSet>
    <Table1>
        <recordid>1</recordid>
        <Q2_1>aaaa</Q2_1>
        <Q2_2>bbbb</Q2_2>
    </Table1>
    <Table1>
        <recordid>2</recordid>
        <R2_1>eeee</R2_1>
        <R2_2>ffff</R2_2>
    </Table1>
    <Table1>
        <recordid>3</recordid>
        <R2_1>iiii</R2_1>
        <Q2_2>jjjj</Q2_2>
    </Table1>
</NewDataSet>';

样本表

recordid                ElementName                 Value
----------------------------------------------------------
1                       Q2_1                        aaaa
1                       Q2_2                        bbbb
2                       R2_1                        eeee
2                       R2_2                        ffff
3                       R2_1                        iiii
3                       Q2_2                        jjjj

【问题讨论】:

    标签: sql xml sql-server-2008 xml-parsing


    【解决方案1】:
    SELECT 
        e.e.value('../recordid[1]', 'INT') As [recordid]
        ,e.e.value('fn:local-name(.)', 'NVARCHAR(100)') As [ElementName]
        ,e.e.value('.', 'NVARCHAR(100)') As [Value]
    FROM @xml.nodes('/*/*/*') e(e)
    WHERE
        e.e.value('fn:local-name(.)', 'NVARCHAR(100)') != 'recordid'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2021-03-25
      • 1970-01-01
      • 2020-11-12
      相关资源
      最近更新 更多