2011/03/03

VC++&MSXMLによるXML操作1

#この記事は昔の自blogの記事の転載です。

XMLパーサーの紹介


XMLを使用するためにある既存のパーサーは何通りかある。

  1. MSXML(Microsoft)

  2. Xerces(Apache)

  3. TinyXML

  4. XMLite

本投稿ではMSXMLを利用してXMLを操作していく。



環境はVisualStudio2005を使用。2008でも動くことは確認済み。

もしかしたらMSXMLに関する日本語技術文書を探しにきた人が訪れているのかもしれないが、結局はMSDNLibraryを参照するしかないので、がんばって読むしかないです。

http://msdn.microsoft.com/en-us/library/ms763742(VS.85).aspx

(リンクが切れている場合は MSDN - Win32 and COM~ - Data access~ - MSXML から参照してください。)

初めてMSXMLを使用するという場合にはMSXML - DOM - How Do I Use? を一読することをお勧めします。

大体ここを読んで、サンプルコードを走らせれば大まか動かし方がわかるようになるでしょう。

投げっぱなしではエントリの意味もないので環境設定が終わった前提で話を進めます。


MSXMLを使用するための方法


まずリンカへの関連付けですが、2通りあります。

(もしかすると環境によっては使用できないケースがあるかもしれないです。)

[cpp]
#include <msxml.h> // ( or <msxml3.h> or <msxml.h6> )
#pragma comment( lib, "msxml.lib" )
[/cpp]

上記のmsxml.hとmsxml.libはVSのincludeフォルダにインストールされているようなので、Borlandやgccだと使用できないかも?

他にもPlatformSDKをインストールすると入っていた。

環境によってmsxml6があったりなかったり。

[cpp]
#import "msxml3.dll" raw_interfaces_only
using namespace MSXML2;
[/cpp]

こちらの場合は、おそらく複数のコンパイラで対応しているかも?

(importディレクティブってC標準だったかな?)

実行時に解決するため、実行環境に依存します。

つまり、実行環境のwindows/system32の中にmsxml3.dllがないと実行時にエラーが出力されます。

WindowsXP以降なら標準でmsxml3.dllまでは入っているみたいなのでそれ以前を選択しておけば問題ないはず。

それ以前になると自前で用意してもらわなければならない可能性がでてくる。

0 件のコメント:

コメントを投稿