InterBase API を利用した XML の生成
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 および配列はサポートされていません。