2017-05-16 15 views
0

SQL ServerのデータからXMLファイルを作成しようとしています。私はより多くの要素:XML in Sql server

を追加することができません推測、私はつもり

<SampleXML> 
    <Colors> 
    <Color1>White</Color1> 
    <Color2>Blue</Color2> 
    <Color3>Black</Color3> 
    <Color4>green</Color4> 
</Colors> 
<Fruits> 
    <Fruit1>Apple</Fruit1> 
    <Fruit2>Grapes</Fruit2> 
    <Fruit3>Pinapple</Fruit3> 
    <Fruit4>Melon</Fruit4> 
</Fruits> 
</SampleXML> 

は、このような出力を持つことです。

select (select 'White' as Color1, 
'Blue' as Color2, 
'Black' as Color3, 
    'green' as Color4 
    for XML Path ('Colors'), type), 
    (select 'Apple' as Fruit1, 
'Grapes' as Fruit2, 
'Pinapple' as Fruit3, 
'Melon' as Fruit4 
    for XML Path ('Fruits'), type) 

    For XML Path (''), root ('SampleXML') 
    go 

このコードは、以下の出力生成:私は、次のコードを持っています

<SampleXML> 
<ColorsandFruits> 
    <Colors> 
     <Color1>White</Color1> 
     <Color2>Blue</Color2> 
     <Color3>Black</Color3> 
     <Color4>green</Color4> 
    </Colors> 
    <Fruits> 
    <Fruit1>Apple</Fruit1> 
    <Fruit2>Grapes</Fruit2> 
    <Fruit3>Pinapple</Fruit3> 
    <Fruit4>Melon</Fruit4> 
    </Fruits> 
    </ColorsandFruits> 
    <ColorsandFruitsNumber2> 
    <Colors> 
    <Color1>White</Color1> 
    <Color2>Blue</Color2> 
    <Color3>Black</Color3> 
    <Color4>green</Color4> 
    </Colors> 
    <Fruits> 
    <Fruit1>Apple</Fruit1> 
    <Fruit2>Grapes</Fruit2> 
    <Fruit3>Pinapple</Fruit3> 
    <Fruit4>Melon</Fruit4> 
    </Fruits> 
</ColorsandFruitsNumber2> 
</SampleXML> 
+0

FOR XML AUTO、ELEMENTSを使ってみましたか? JOINを使用するようにクエリを再構成する場合は、期待通りに複数の要素でXMLをフォーマットする必要があります。 –

+1

いいえ、私はしていません。しようとします。おかげで、 – user7675421

答えて

0

しないでください!

次のような構造は十分です:

<Fruits> 
    <Fruit>Apple</Fruit> 
    <Fruit>GrapesFruit> 
    <Fruit>Pineapple</Fruit> 
</Fruits> 

これはFOR XML PATH('Fruit'),ROOT('Fruits')を使用して表データのうち、容易に生成されます。

要素の順序は文書の固有の部分であり、変更されません。あなたの要素に番号を付ける必要はありません。後でこれを読むと、各要素に1つの呼び出しを書くか、遅くて誤りのある//*[predicate]のような呼び出しに対処する必要があります。番号の要素を持っていることは非常に悪い最新デザインです

SELECT TheXml.value('(/Fruits/Fruit)[1]') AS Fruit1 
     ,TheXml.value('(/Fruits/Fruit)[2]') AS Fruit2 
     ...and so on... 

ます上記の構造を照会することができます。あなたが本当にこれらの番号が必要な場合は、この

<ColorsandFruitsNumber2> 

ながら約

<Fruits> 
    <Fruit nr="1">Apple</Fruit> 
    <Fruit nr="2">GrapesFruit> 
    <Fruit nr="3">Pineapple</Fruit> 
</Fruits> 

同じだと思うかもしれません再びそれをしないでください!あなたのデータには、ある種のグループ化キーがあります。このグループ化キーをに設定すると、の属性を持つグループになります。

<ColorsandFruitsNumber groupkey="2"> 

FOR XML PATHを使用してネストされたXMLを構築する方法の例がたくさんあります。

これはあなたに役立つ場合は、サンプルデータ(表形式、またはそれよりも良い)を少しのスクリプトで提供してください。 DECLARE TABLEおよびINSERT INTO)および予想される出力。

+0

ありがとう、Shnugo!私は予想される出力とスクリプトを質問に加えました。 – user7675421

+0

@ user7675421あなたの*予想される出力とスクリプト*は、あなたのニーズを本当に説明していません。あなたは実生活でいくつかのハードコーディングされたフルーツの名前で決して 'SELECT'を使用しませんか?あなたの*予想される出力*は - 構造的に - 絶対に間違っています。私は本当にあなたが本当に達成したい出力ではないことを願っています...データはどこから来ていますか? – Shnugo

+0

こんにちは、これはちょうどサンプルです、私はそれが参考になると思った。私はポストコードと実際のサンプルデータを数分で投稿します。ありがとう – user7675421