- PR -

ArrayListからString二次元配列への変換

1
投稿者投稿内容
ヒフミ
会議室デビュー日: 2004/03/30
投稿数: 16
投稿日時: 2004-04-08 18:26
いつも参考にさせていただいております。
ArrayList⇒String二次元配列
の変換方法で行き詰ってしまいました。

またまた初歩的な質問で申し訳ないのですが、御存知の方がいらっしゃればご教授頂きたく思います。
下記に行いたい処理を書いておくので、もっと効率的な解析法があるのならばアドバイス頂ければ幸いです。

【環境】WINDOWS.FORM
【行いたい処理】ArrayList⇒String二次元配列に変換したい
【前提条件】
1.下記のような決まった形式のXML(String文字列)を解析します。<Line>タグ内のタグ(<AAA>)がそれぞれDB内の1カラムに相当し、<Line>〜</Line>がDBの1テーブルになるので、その中のTEXTだけを抜き出し、ArrayListにAddしています(カラム数は前もってわかっています。テーブル数だけ不明です)。

<Response>
<List>
<Line>
<AAA>○○○</AAA>
<BBB>◇◇◇</BBB>
</Line>
<Line>
<AAA>○○×</AAA>
<BBB>◇◇×</BBB>
</Line>



</List>
</Response>

2.カラム数がわかっているならば、ArrayListを二次元配列にしてAddすることもできるのですが、この解析処理を共通化して使用したいので(形式は同じだがカラム数が異なるDBを解析できるようにしておきたい)、それぞれの個別クラス内でArrayListを二次元に変換してDBのような形式で保持したいと考えています。

現状では、プログラム内部でDataTableを作成して、横一列に規則的にならんだArrayListを強引にfor文を使用し値を入れ、DataGridに表示させることには成功しました。しかし、横一列にデータを保持したままだと何かと応用が利きません。

拙い説明で申し訳ありませんが、よろしくお願いいたします。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2004-04-08 18:44
<Line>〜</Line>はDBの1行にあたるんですよね?
それであれば、ArrayListに読み込むのではなく、DataSetに読み込んでみてはどうでしょうか?
ヒフミ
会議室デビュー日: 2004/03/30
投稿数: 16
投稿日時: 2004-04-08 18:54
アティ様

早速の返答ありがとうございます。

なにしろC#を始めたばかりで、DataSetの使用方法・読み込み方もイマイチわかっていないので(お恥ずかしいことですが・・)使い方の例などを教えていただけると、大変ありがたいのですが・・。


一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-08 19:01
引用:

ヒフミさんの書き込み (2004-04-08 18:26) より:
<Line>〜</Line>がDBの1テーブルになるので、その中のTEXTだけを抜き出し、ArrayListにAddしています(カラム数は前もってわかっています。テーブル数だけ不明です)。


は、

<Line>〜</Line>がDBの1レコードになるので、その中のTEXTだけを抜き出し、ArrayListにAddしています(カラム数は前もってわかっています。レコード数だけ不明です)。

の間違いですか?
そうだとして話を進めますが、
>横一列にデータを保持したままだと何かと応用が利きません
と考えていながら、「行いたい処理」は「ArrayList⇒String二次元配列に変換したい」なのですね。
例えば「1つの<Line>のデータをHashTableに格納して、その<Line>をArrayListにAddしていく」とかやりようはあると思うんですが、初めに何かと応用が利かない横一列に規則的にならんだArrayListにするのは絶対条件なのですか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-08 19:07
あれ・・・・
ArrayListに格納しているということですが、例えば2番目の<Line>の中の<AAA>と<BBB>の場所が逆だったらどうしてるんですか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-08 19:20
諸農です。

引用:

現状では、プログラム内部でDataTableを作成して、横一列に規則的にならんだArrayListを強引にfor文を使用し値を入れ、DataGridに表示させることには成功しました。しかし、横一列にデータを保持したままだと何かと応用が利きません。



DataSet.ReadXML()は使えませんか?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
ヒフミ
会議室デビュー日: 2004/03/30
投稿数: 16
投稿日時: 2004-04-08 19:26
引用:

一郎さんの書き込み (2004-04-08 19:07) より:
あれ・・・・
ArrayListに格納しているということですが、例えば2番目の<Line>の中の<AAA>と<BBB>の場所が逆だったらどうしてるんですか?




SQLでDB検索をするので、SQLで指定したフィールドの順番に<Line>内のタグも入ってきます(この部分の開発担当者にも確認してみましたが・・)。

常に規則的に並んでいることを前提にしています。



1

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