none
複数のXMLファイルを読み込んで、相互に結合した都合のいい体裁のファイルを出力したい。その場合の一時DBはどういったものが利用可能? RRS feed

  • 質問

  • 読み込むXMLファイルの場所を指定するためのFolderBrowserDialogと、一つのコマンドボタンしかフォーム上にないWindowsアプリケーションです。

    標題のとおりのことを達成したいのですが、現在は各XMLファイルごとに、StreamReaderのループで、項目間の区切りをタブで表して、1レコード1レコードを表示できる状況になっています。

    各XMLファイルを一先ずテーブルのような場所へ格納し、これらを都合よく結合した上、その集団をEXCELか、タブ区切りテキストへ出力できればな、と考えています。

    こういった時、アクセスやSQLserverといった外部のDBを利用しない場合、一般的にはどういった格納方法があるのでしょうか?

    どなたかご紹介いただけませんでしょうか?

    個々のXMLファイルで最低5個の項目を持っており、参照しやすい手順を希望としています。列名を指定して簡易に参照するような手立てができればベストです。

    一次配列ArrayListの記事を読む限り、複数の項目を保持することに適さないような印象を持ちました。配列の使い方を十分に理解できていないのか、ハッシュテーブルというものの理解が足りないのか....

    皆様がメモリ上にDBを展開する方法として、利用する常套手段を教えて頂けないでしょうか?

    そういっった結合の機能は、Excel側・ACCESS側でやる、という意見が多ければ、それはそれで納得したいと思います。


    • 編集済み saya24 2017年5月12日 12:59 誤記訂正
    2017年5月12日 12:56

回答

  • > 各XMLファイルを一先ずテーブルのような場所へ格納し、これらを都合よく結合した上、
    > その集団をEXCELか、タブ区切りテキストへ出力できればな、と考えています。

    「都合よく結合」というのはどういうことなんでしょう? そこをコードに落とせるレベルできちんと書いてもらえないと「テーブルのような場所」に何が適しているかはわからないのですが・・・

    > 皆様がメモリ上にDBを展開する方法として、利用する常套手段を教えて頂けないでしょうか?

    そこだけに回答すると自分が真っ先に頭に浮かぶのは DataSet / DataTable です。

    xml ファイルから DataSet / DataTable を作成するとか、DataSet / DataTable から xml ファイルを作成するのは容易です。具体例は以下の記事を見てください。

    XML ファイルの更新操作
    http://surferonwww.info/BlogEngine/post/2010/09/27/Delete-insert-and-update-operations-of-XML-file.aspx

    ただし、「都合よく結合」できるかどうかは、質問者さんが何をしたいのか分かりませんので分かりません。

    • 回答としてマーク saya24 2017年5月13日 3:42
    2017年5月13日 0:22

すべての返信

  • 結局どんなデータ構造なのかよく分かりませんでしたが、単純な2次元の表であるなら、列をプロパティで表現したclassのList<T>を使えば良いんじゃないでしょうか。

    というかXMLを読み込むのにStreamReader……? XDocumentなどのDOMを使った方が楽かも知れません。場合によってはXDocumentのまま最後まで通すこともできるでしょう。

    2017年5月12日 13:06
  • > 各XMLファイルを一先ずテーブルのような場所へ格納し、これらを都合よく結合した上、
    > その集団をEXCELか、タブ区切りテキストへ出力できればな、と考えています。

    「都合よく結合」というのはどういうことなんでしょう? そこをコードに落とせるレベルできちんと書いてもらえないと「テーブルのような場所」に何が適しているかはわからないのですが・・・

    > 皆様がメモリ上にDBを展開する方法として、利用する常套手段を教えて頂けないでしょうか?

    そこだけに回答すると自分が真っ先に頭に浮かぶのは DataSet / DataTable です。

    xml ファイルから DataSet / DataTable を作成するとか、DataSet / DataTable から xml ファイルを作成するのは容易です。具体例は以下の記事を見てください。

    XML ファイルの更新操作
    http://surferonwww.info/BlogEngine/post/2010/09/27/Delete-insert-and-update-operations-of-XML-file.aspx

    ただし、「都合よく結合」できるかどうかは、質問者さんが何をしたいのか分かりませんので分かりません。

    • 回答としてマーク saya24 2017年5月13日 3:42
    2017年5月13日 0:22
  • Hongliangさん

    ご見解ありがとうございました。

    XMLファイルさえも、データベースであることの認識が薄れていた為に、私はStreamReaderを使っていたのだと思います。

    この点に気づかせて頂いたことは非常にありがたかったです。

    思い込みで突っ走り、XMLのキーワードでインターネットに検索していなかったです。エクセルでさえもインポートできるのですね。お時間を頂きましてありがとうございました。

    2017年5月13日 3:42
  • SurferOnWwwさん

    ご無沙汰しております、ASP.NETでだいぶお世話になったものです。

    さて本件、XMLをデータベースとして扱う認識が遠のいていたみたいで、問い合わせしてしまいました。

    (今までXMLをDataSet / DataTableに取り込んだこともなし)

    ヒントありがとうございました。データテーブル間の連結で、自分のやりたいことは簡単に達成できそうです。

    いつもすみません。



    • 編集済み saya24 2017年5月13日 3:51 誤記訂正
    2017年5月13日 3:50