- PR -

階層構造のあるXMLをDataSetに…。

1
投稿者投稿内容
@H
会議室デビュー日: 2005/02/22
投稿数: 13
投稿日時: 2005-04-26 11:20
いつもお世話になっております。

下記のようなXMLをDataSetに取り込んで、
最終的にはSPREADで表示するような、
Winアプリを作成しております。

<Data>
<Person>
<Name>×××</Name>
<Age>××</Age>
<Address>
<Country>××</Country>
<City>××××</City>
</Address>
</Name>
</Person>
<Person>
<Name>○○○</Name>
<Age>○○</Age>
<Address>
<Country>○○○</Country>
<City>○○○○○</City>
</Address>
</Person>
</Data>

↑これを取り込み、SPREAD上では、
<Person>タグの内容を数行に分けて表示したいと考えています。
つまり、
1行目に<Person>タグの内容を。
2行目に<Person>タグ内の<Address>タグの内容を…。という感じです。

DataSetに取り込んだ段階で、
"Person"と"Address"という2つのDataTableが作成されるのですが、
これが上手く連携してくれません。
おそらく、Relationが無い為だと思われるのですが、
各タグに、そのような情報が無い為、Relationが張れないのです…。
※DataGridだと、+ボタンで階層構造を表示することができるのですが…。

XMLの階層構造を、上手く表示する方法がありましたら、
ご教授願えませんでしょうか?
あるいは、そもそも、こういったXMLはSPREADシートに表示できないのでしょか?

宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-04-27 21:54
DTDだっけ?定義していますか?
_________________
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2005-04-29 01:13
リレーションであれば、コードでDataTable間のリレーションを関連付けることができます。
でなければ、対象のXMLデータ専用のデータセットをVS.NETで定義すればデザイナを使用して関連付けがビジュアルにできます。で、そのデータセットクラスを使用してXMLを読み込むとか。
DataTableのリレーションの作成に関してはMSDNを参照してみてください。
以前書いたことはあるんですが、そのときしか必要になったことがないので、今はちょっと空では憶えていません。
ただ別に複雑ではなかったです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-04-29 17:52
引用:

karajanさんの書き込み (2005-04-29 01:13) より:
リレーションであれば、コードでDataTable間のリレーションを関連付けることができます。


そのためのキーが、設定されていないように思います。ん〜?読みとれていない、かな?

 こんな風にテーブルが作成されていれば、リレーションをはれないですよね?
コード:
Person:Name, Age
Address:Country, City


元々、このPersonを識別する列がありませんから、またはNameなのかもしれませんが、リレーションをあとから張るのは不可能と思います。
_________________
@H
会議室デビュー日: 2005/02/22
投稿数: 13
投稿日時: 2005-04-29 18:25
皆様

お返事ありがとうございます。

Jittaさん >> DTDは定義されていません。
karajanさん >> Jittaさんのおっしゃるとおり、
        Relationは設定できない構造となっています…。

皆様のご意見を参考に、自分でいろいろと試したのですが、
ChildRows()を使用すると、うまく取得出来ました。
※本当に正しいのか、もっと上手い方法があるのか、
わかりませんが、とりあえず解決できました。

本当にありがとうございました。
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2005-04-29 19:38
本当ですね。
何でできると思ったんだろう・・・。
やっぱり空でいえるくらいでないと、あまりいい加減なことはいえないですね。
以後気をつけます
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-04-29 20:44
引用:

karajanさんの書き込み (2005-04-29 19:38) より:

やっぱり空でいえるくらいでないと、あまりいい加減なことはいえないですね。
以後気をつけます


私もいい加減なこといってますよぉ〜(゚_゚;



引用:
ChildRows()を使用すると、うまく取得出来ました。


正しいでしょう。おそらく、元のXMLが階層になっていますから、そっちからとってきていると思います。
 そのうち試そうと思っていたことを報告していただき、ありがとうございます。
_________________
1

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