Skip Headers

Oracle® XML API Reference 10g Release 1 (10.1) Part No. B10789-01 |
| Contents

## Initializing and Parsing Sequence Changes

The initialization and parsing of documents has changed in the Unified C API.

Example 1-1 Initializing and Parsing Sequence for the Pre-Unified C API, One Document at a Time

The following pseudo-code demonstrates how to initialize and parse documents, one at a time, using the old C APIs. Contrast this with Example 1-2.

    #include <oraxml.h>
    uword err;
    xmlctx *ctx = xmlinit(&err, options);
    for (;;)
    {
       err = xmlparse(ctx, URI, options);
       ...
       /* DOM operations */
       ...
       /* recycle memory from document */
       xmlclean(ctx);
    }
    xmlterm(ctx);

Example 1-2 Initializing and Parsing Sequence for the Unified C API, One Document at a Time

The following pseudo-code demonstrates how to initialize and parse documents, one at a time, using the new C APIs. Contrast this with Example 1-1.

    #include <xml.h>
    xmlerr err;
    xmldocnode *doc;
    xmlctx *xctx = XmlCreate(&err, options, NULL);
    for (;;)
    {
       doc = XmlLoadDom(xctx, &err, "URI", URI, NULL);
       ...
       /* DOM operations */
       ...
       XmlFreeDocument(xctx, doc);
    }
    XmlDestroy(xctx);

Example 1-3 Initializing and Parsing Sequence for the Pre-Unified C API, Multiple Documents and Simultaneous DOM Access

The following pseudo-code demonstrates how to initialize and parse multiple documents with simultaneous DOM access using the old C APIs. Contrast this with Example 1-4.

    xmlctx *ctx1 = xmlinitenc(&err, options);
    xmlctx *ctx2 = xmlinitenc(&err, options);
    err = xmlparse(ctx1, URI_1, options);
    err = xmlparse(ctx2, URI_2, options);
    ...
    /* DOM operations for both documents */
    ...
    xmlterm(ctx1);
    xmlterm(ctx2);

Example 1-4 Initializing and Parsing Sequence for the Unified C API, Multiple Documents and Simultaneous DOM Access

The following pseudo-code example demonstrates how to initialize and parse multiple documents with simultaneous DOM access using the new C APIs. Contrast this with Example 1-3.

    xmldocnode *doc1;
    xmldocnode *doc2;
    xmlctx *xctx = XmlCreate(&err, options, NULL);
    doc1 = XmlLoadDom(xctx, &err, "URI", URI_1, NULL);
    doc2 = XmlLoadDom(xctx, &err, "URI", URI_2, NULL);
    ...
    /* DOM operations for both documents*/
    ...
    XmlFreeDocument(xctx, doc1);
    XmlFreeDocument(xctx, doc2);
    ...
    XmlDestroy(xctx);