|
分類:[C/C++]
C++でのXMLParse処理にて行き詰ってしまいましたので 質問させていただきます。
※Webにてサンプルを和/洋サイトにて調べてコードを書いてみているのですが、メンバ変数/関数が存在していなかったり名前が違っていたりとコンパイルを通すことさえできない状態です。
【質問】 GetItem関数やGettext関数等、Web上ではどのサイトでも当たり前のように使用しているように書いてありますが 実際クラスのメンバの中に存在していません。 #includeの方法や使い方に問題があるのでしょうか? 使用するために前準備などが必要でしたら教えてもらえないでしょうか?
「MSXML4.DLL」を使用してXMLのParseを行いたいと思っています。
サンプルのXMLは以下でconfigのname、typeの値を取得したいと思っています。 【XML】 <?xml version="1.0" encoding="SHIFT-JIS"?> <sample id="100"> <config name="A" type="1" >test1</config> </sample>
【Source】
#include "msxml.h" #import <msxml4.dll> named_guids raw_interfaces_only using namespace MSXML2;
typedef MSXML2::IXMLDOMNodeListPtr INodeListPtr; typedef MSXML2::IXMLDOMNodePtr INodePtr; typedef MSXML2::IXMLDOMElementPtr IElementPtr;
INodeListPtr plNameList; IElementPtr pElement; pDoc->get_documentElement( &pElement ); pElement->getElementsByTagName( _bstr_t( L"sample" ), &plName );
long maxElement; plNameList->get_length( &maxElement ); for( long i=0; i < maxElement; i++ ) {
IElementPtr peName = plNameList->GetItem(i);
// タグ名"name"の要素を取得 IElementPtr peString = peName->getElementsByTagName( _bstr_t( L"name" ) )->GetItem(0); _variant_t str = peString->Gettext();
// タグ名"type"の要素を取得 IElementPtr peComment = peName->getElementsByTagName( _bstr_t( L"type" ) )->GetItem(0); _variant_t cmt = peComment->Gettext();
wprintf( L"%s (%s)\n", str.bstrVal, cmt.bstrVal ); }
【環境】 開発環境:VC++2008 MFC スマートデバイス 実行環境:Windows Mobile 6 standard-edition
以上よろしくお願いします。
|