ホーム > プログラミング > Windows プログラミング > MSXML を利用して XMLファイル を解析するには


MSXML を利用して XMLファイル を解析するには

解説

MSXML を利用して XMLファイル を解析する方法をまとめます。
便利機能
・IXMLDOM〜Ptr を使う
MSXMLの処理においては、IXMLDOM〜型のオブジェクトを扱います。
IXMLDOM〜型には、型名の語尾にPtrが「付く」型と、「付かない」型があります。
型名の語尾にPtrが「付く」型は、スマートポインタ型なので、特に理由がない限り、型名の語尾にPtrが「付く」型を使います。
型名の語尾にPtrが「付かない」型を使う場合には、オブジェクトが不要になった際には Release関数を呼び出す、型変換は QueryInterface関数を通して行う、等が必要になります。
・CComVariant、CComBSTRを使う
MSXMLの処理においては、BSTR型やVARIANT型のオブジェクトを扱います。
BSTR型やVARIANT型には、ラッパークラスである、CComVariant型、CComBSTR型があります。特に理由がない限り、ラッパークラスである、CComVariant型、CComBSTR型を使います。
BSTR型やVARIANT型を使う場合には、領域の確保処理の記述、領域の開放処理の記述、型変換処理の記述、等が必要になります。
準備
・MSXML.DLL のインポート
#import "msxml.dll" named_guids raw_interfaces_only
をファイルヘッダー部に追加します。
これにより、MSXMLの処理が使えるようになります。
・import ディレクティブ:コンパイラは、指定されたファイルを利用可能にするヘッダーファイルを自動生成し、生成されたヘッダーを読み込みます。
・msxml.dll:msxml処理モジュールファイル。MSXML.DLLには、複数のバージョンがあります。必要に応じて、msxml.dll を msxml2.dll , msxml3.dll , msxml4.dll , msxml5.dll , msxml6.dll 等に置き換えます。
・named_guidsオプション:コンパイラは、指定されたファイルを利用可能にするヘッダーファイルに、GUID型の CLSIDやIIDの定義を生成します。
・raw_interfaces_onlyオプション:コンパイラは、指定されたファイルを利用可能にするヘッダーファイルにCOMインターフェイスの定義を生成します。
・atlbase.h のインクルード
#include <atlbase.h>
をファイルヘッダー部に追加します。
これにより、CComVariant型、CComBSTR型が使えるようになります。
・COMの初期化処理、COMの終了処理
MSXMLの処理を使うためには、COMの初期化が必要です。
CoInitialize(NULL);
をアプリケーションの開始処理部に、
CoUninitialize();
をアプリケーションの終了処理部に、
追加します。
手続き
・DOMドキュメントの作成
IXMLDOMDocumentPtr::CreateInstance 関数を利用し、IXMLDOMDocumentPtrオブジェクトを作成する。
・XMLファイル読み込み
IXMLDOMDocumentPtr::load 関数を利用して、ファイルを読み込みます。
load 関数に先立って、IXMLDOMDocumentPtr::put_async( VARIANT_FALSE ) を呼び出し、load関数が、ロードを完了するまで待つようにします。
・ノード、属性の探索、値の取得
各種 get〜関数を利用して、ノード、属性を探索し、また、値の取得をします。

サンプルコード

ダウンロード

サンプルプロジェクト

コメント


ご意見、ご感想、ご質問、ご要望等は、「コメントを投稿する」もしくは「ホーム > コンタクト」よりお願いいたします。
内容の誤り、誤字脱字、リンクミスなどの問題点を発見された場合には「コメントを投稿する」もしくは「ホーム > コンタクト」より連絡していただけると幸いです。


Copyright (c) 2004-2010 Nobuki HIRAMINE All rights reserved.