InterBase API を利用した XML の生成

提供: InterBase

XML のエクスポート へ戻る


InterBase には、InterBase テーブルから直接 XML ドキュメントを生成するための次の 3 つの API 呼出しがあります: isc_dsql_xml_fetch()isc_dsql_xml_fetch_all()isc_dsql_xml_buffer_fetch()

これらの機能は、新しいクライアント側のライブラリの一部で、Winodws では ibxml.dll、Solaris や Linux では ibxml.so というファイルです。

  • これらの関数に定義された構造体は、新しいヘッダー ファイル ibxml.h の中にあります。
  • プロトタイプ定義は、ファイル ibxml_proto.h に含まれています。 このヘッダー ファイルはまた、内部で ibxml.h をインクルードしています。

この機能を使用するには、ライブラリをリンク パスに追加し、新しいヘッダー ファイルをコンパイラの include ファイルに追加しなければなりません。

新しい関数プロトタイプは次のとおりです:

  • isc_dsql_xml_buffer_fetch() は、XML 形式のテキストを指定されたバッファに返します。
int isc_dsql_xml_fetch(ISC_STATUS *status_vector,
isc_stmt_handle *stmt_handle,
unsigned short da_version,
char *buffer
int buffer_size
XSQLDA *xsqlda,
IB_XMLDA *ib_xmlda);

isc_dsql_xml_buffer_fetch() を使用するには、最低 1024 文字分のバッファを領域確保する必要があり、これが buffer 引数で関数に渡されます。 buffer_size 引数は、この渡されたバッファのサイズをレポートします。 関数は、バッファに書き込まれた文字のサイズを、終端の null 文字を抜いて返します。 処理を継続するのに十分なメモリがなかった場合には -1 を返し、バッファ サイズが、ヘッダーやフッターを完全に格納するのに小さすぎる場合には -2 を返します。 この関数が、不完全なヘッダー、フッター、レコードを返すことはありません。 完全な XML バッファを取得するために、再度呼び出しを行う必要がある場合には、xmlda_more_data が設定されます。

In order to make the calls work with Delphi, use the regular POINTER 呼出しを Delphi で動作させるには、標準の POINTER 型を使用して、IBXMLDA 構造体に FILE* 型の領域を確保します。

  • isc_dsql_xml_fetch() は、取得したデータを、XML 形式のファイルに追加し、このデータを XSQLDA に返します。
int isc_dsql_xml_fetch(ISC_STATUS *status_vector,
isc _stmt_handle *stmt_handle,
unsigned short da_version,
XSQLDA *xsqlda,
IB_XMLDA *ib_xmlda);
  • isc_dsql_xml_fetch_all() は、事前に準備され実行されたステートメント ハンドルを使用して、XML 形式のファイルを作成します。
int isc_dsql_xml_fetch(ISC_STATUS *status_vector,
isc_stmt_handle *stmt_handle,
unsigned short da_version,
XSQLDA *xsqlda,
IB_XMLDA *ib_xmlda);

これらの関数は、isc_dsql_prepare() で準備され、isc_dsql_execute() で実行されたステートメントで動作します。 ib_xmlda は、初期化された XML ディスクリプタ エリア(IB_XMLDA)へのポインタです。

isc_dsql_xml_fetch() は、XSQLDA を使用した、カーソルでのデータへの連続アクセスを許可します。

Blob および配列はサポートされていません。

トピック

次は: