3

スキーマが不明な XML をテーブルに細断処理す​​る必要があります。XML にどのような要素があるかわかりません。また、XML 形式についても認識していません。XML データが属性中心の場合もあれば、要素中心の場合もあります。

例 - 私は 2 つの XML を持っています -

<Root>
   <Recorset>
       <RecordsetId>1</RecordsetId>
       <RecordsetName>name1</RecordsetName>
  </Recorset>
</Root>

<Root>
     <Recorset RecordsetId="2" RecordsetName="name2"></Recorset>
</Root>

XML には、他の要素/属性を含めることができます。OPENXML から生成された EDGE テーブルを使用して、要素/属性名とそれぞれのデータを取得する必要があります。

これを行う最も簡単な方法は何ですか?

指定された形式で出力する必要があります -

RecodrsetId   RecordsetName
1             Name1
2             Name2
4

1 に答える 1

3

このようなもの?

select
    C.Name,
    C.Value
from @Data.nodes('//*') as T(C)
    outer apply (
        select
            T.C.value('local-name(.)', 'nvarchar(max)') as Name,
            T.C.value('(./text())[1]', 'nvarchar(max)') as Value
        union all
        select
            A.C.value('local-name(.)', 'nvarchar(max)') as Name,
            A.C.value('.', 'nvarchar(max)') as Value
        from T.C.nodes('@*') as A(C)
    ) as C
where C.Value is not null

sql fiddle demo

于 2013-09-23T18:51:22.627 に答える