- PR -

DBの内容を階層をつけてXMLに出力したい

1
投稿者投稿内容
プラズマY
会議室デビュー日: 2007/08/23
投稿数: 6
投稿日時: 2007-12-14 18:26
C#で開発しています。

データの取得にDataSetとDataAdapterを使用しています。
サーバはSqlServer2000です。

ヘッダテーブルと、データテーブルからなるDBの内容をXMLに出力したいのですが
その際、階層をつけてXMLデータとして出力するにはどうしたらいいでしょう。
また、ROOT_NAMEの変更方法もわかりません

以下のようなテーブルがあり、TBL_BはTBL_Aの子供、
TBL_A:1レコードに対してTBL_B:複数レコード

TBL_A
KEY
ColA1
ColA11
ColA2

TBL_B
KEY
MEISAI_NO
ColB1
ColB2

DataSetのWriteXMLを使ってみたのですが
SQLで普通に取ってくると当然、TBL_Aも明細行分取得してしまいうまくいきません。
これを下のようなxmlを出力したいです

<?xml version = "1.0" encoding="utf-8"?>
<ROOT_NAME>
<TBL_A>
<ColA1>aaa</ColA1>
<ColA11>aaa</ColA11>
<TBL_B LINE = "1">
<ColB1>bbbb</ColB1>
<ColB2>bcbcb</ColB2>
</TBL_B>
<TBL_B LINE = "2">
<ColB1>bbbb</ColB1>
<ColB2>bcbcb</ColB2>
</TBL_B>
<ColA2>a2a2</ColA2>
</TBL_A>
<TBL_A>
<ColA1>aaa2</ColA1>
<ColA11>aaa</ColA11>
<TBL_B LINE = "1">
<ColB1>BBBB</ColB1>
<ColB2>BCBCBC</ColB2>
</TBL_B>
<TBL_B LINE = "2">
<ColB1>BBBB2</ColB1>
<ColB2>B2b2b2</ColB2>
</TBL_B>
<ColA2>a2a2</ColA2>
</TBL_A>
</ROOT_NAME>



[ メッセージ編集済み 編集者: プラズマY 編集日時 2007-12-14 20:07 ]
OakBow
ベテラン
会議室デビュー日: 2007/09/15
投稿数: 51
投稿日時: 2007-12-15 10:01
FOR XMLという、XML形式での出力を行う機能がMSSQLにはありますので、
これを使うのはどうでしょうか。
MSSQL2005だとこの機能が強化されてて使いやすくなってるものの、
MSSQL2000だと若干クエリが複雑になるかなとは思いますけれど。

C#にもXMLを扱うAPIがあると思いますので、MSSQLである程度望みの形に
できたら、細部はそちらで微調整するといいかもしれません。
すべてをどちらかで、というのはきつい気がするので。
1

スキルアップ/キャリアアップ(JOB@IT)