DBIx::XML_RDB v0.05

Hippo2000 (2000/12/13)

DBIx系モジュールの1つDBIx::XML_RDBです。

作者はMatt Sergeantさんです。メールで許可をいただきました。


目次


名前

DBIx::XML_RDB - 既存のDBIデータソースからXMLを作成するPerl拡張


概要

  use DBIx::XML_RDB;
  my $xmlout = DBIx::XML_RDB->new($datasource,
                "ODBC", $userid, $password, $dbname) || die "Failed to make new xmlout";
  $xmlout->DoSql("select * from MyTable");
  print $xmlout->GetData;

説明

このモジュールはDBIデータソースからの簡単なXMLデータ作成ツールです。これはデータベースから簡単にデータを取り出し、後でXML::Parserを使って操作することを可能にします。

このモジュールの1つの使用方法は(そして私にとって近いところでは)、Webサーバでデータを取り出し、クライアントのブラウザに(XMLの形式で)名前のデータを送信し、HTMLを生成するためにクライアントのマシンでPerlScriptからXML::Parserを使うか、VBScript/JavaScriptからMSXMLを使用することです(これは明らかにActive Scripting EngineとIE5ベータで提供されるMSXMLのためにMS IEを使うことを当てにしてます)。

他の使用方法は単純なデータベース取得ツールで、それは含まれている、sql2xmlです。(訳者注:sql2xml.plと思われる)このツールは単純にデータベースのテーブルをXMLファイルにダンプします。これはxml2sql(XML::DBI(?)の一部)(訳者注:同梱のxml2sql.plと思われる)と一緒に使われ、1つのプラットフォームやデータベースサーバから他へ転送するために使うことができます。

バイナリデータはUTF-8を使ってエンコードされます。これはXML::Parserで解析するとき自動的にデコードされます。

"スクリプトレット(Scriptlet)"がディストリビューションに含まれています。これは基本的にこのクラスを包むWin32 OLEラッパーで、OLEをサポートしているすべてのアプリケーションからこのモジュールを呼び出すことができます。インストールするためには、まずhttp://msdn.microsoft.com/scripting からマイクロソフトのスクリプトレットをダウンロードします。そしてエクスプローラでXMLDB.sctの上で右クリックし、"Register"を選択します。"XMLDB.Scriptlet"のインスタンスとしてオブジェクトを作成します。


関数


new

        new ( $datasource, $dbidriver, $userid, $password [, $dbname] )

$dbnameを除く、それぞれの意味についてはDBIのドキュメントをご覧ください。$dbnameはSybaseとMSSQLサーバ・データベース名をサポートするためです。("use $dbname"を使って)


DoSql

        DoSql ( $sql )

単純なSqlコマンド文字列を取ります(SELECTステートメントまたはいくつかのDBMSではリザルト・セットを返すストアド・プロシージャ − SybaseとMSSqlはこれをサポートしていますが、他については分かりません − を指定できます)

これはSQLが正しいかどうかはチェックしません、もし失敗すればこの処理は死にます(die)、これについて気をつけるのであればeval{}ブロックで包んでください。

リザルト・セットは出力に追加されます。後でDoSqlを呼び出すと、出力を上書きせず、それを追加します。これにより(GetData()を使って)出力を取得する前にDoSqlを複数回呼ぶことができます。


GetData

単純にこのSQL呼出しにより生成されたXMLを返します。残念なことにまだストリームとして出力はしません。いつかはそれを追加するかも知れません。(これは、おそらくIOハンドルがnew()に渡されることになるでしょう)

XML出力は以下のようなフォーマットになります:

        <?xml version="1.0"?>
        <DBI driver="dbi:Sybase:database=foo">
                <RESULTSET statement="select * from Table">
                        <ROW>
                        <Col1Name>Data</Col1Name>
                        <Col2Name>Data</Col2Name>
                        ...
                        </ROW>
                        <ROW>
                        ...
                        </ROW>
                </RESULTSET>
                <RESULTSET statement="select * from OtherTable">
                ...
                </RESULTSET>
        </DBI>

これはとても簡単にXML::Parserで解析することができます。


作者

Matt Sergeant, matt@sergeant.org


参考資料

XML::Parser


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。