統一C APIではドキュメントの初期化と解析が変更されました。
例A-1 統一前のC APIを使用した初期化と解析の順序: 一度に1ドキュメント
次の擬似コードは、古いC APIを使用してドキュメントを一度に1つずつ初期化し、解析する方法を示しています。例A-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);
例A-2 統一C APIを使用した初期化と解析の順序: 一度に1ドキュメント
次の擬似コードは、新しいC APIを使用してドキュメントを一度に1つずつ初期化し、解析する方法を示しています。例A-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);
例A-3 統一前のC APIを使用した初期化と解析の順序: 複数ドキュメントおよび同時DOMアクセス
次の擬似コードは、古いC APIを使用して同時DOMアクセスにより複数のドキュメントを初期化し、解析する方法を示しています。例A-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);
例A-4 統一C APIを使用した初期化と解析の順序: 複数ドキュメントおよび同時DOMアクセス
次の擬似コードは、新しいC APIを使用して同時DOMアクセスにより複数のドキュメントを初期化し、解析する方法を示しています。例A-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);