Using the InterBase API to Generate XML
Go Up to Exporting XML
InterBase provides three API calls for generating XML documents directly from InterBase tables:
These functions are a part of a new client side library called
ibxml.dll on Windows and
ibxml.so on Solaris and Linux.
- The structures defined for these functions are located in a new header file called
- The prototype definitions are included in the file
ibxml_proto.h. This header file also internally includes
To use this feature, you must to add the library to your link path, and the new header file to your compiler
The new function prototypes are:
isc_dsql_xml_buffer_fetch()returns XML-formatted text to the specified buffer.
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);
In order to use the
isc_dsql_xml_buffer_fetch(), you must allocate at least a 1024 character buffer, which is passed to the function in the
buffer argument. The
buffer_size argument reports the size of this passed buffer. The function returns the size of characters written into the buffer without the terminating null character. It returns –1 if there is not enough memory for it to continue, or –2 if the buffer size is too small to accommodate the complete header or footer. The function does not return incomplete headers, footers, or records. The
xmlda_more_data is set if the call should be made once again to get the complete XML buffer.
In order to make the calls work with Delphi, use the regular
POINTER type to hold space in the
IBXMLDA structure for the
FILE * type.
isc_dsql_xml_fetch()appends retrieved data to an XML-formatted file and also returns this data to the
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()creates an XML-formatted file using a previously prepared and executed statement handle.
int isc_dsql_xml_fetch(ISC_STATUS *status_vector, isc_stmt_handle *stmt_handle, unsigned short da_version, XSQLDA *xsqlda, IB_XMLDA *ib_xmlda);
These functions work with statements that have been prepared with
isc_dsql_prepare() and executed with
ib_xmlda is a pointer to an initialized XML descriptor area (
isc_dsql_xml_fetch() permits continued access to the data in the cursor, using the
Blobs and arrays are not supported.