掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MSXMLのノード名取得について (ID:70930)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
毎度お世話になります。 現在Win32 コンソールアプリでMSXMLを使ってのXML読み書き処理の作成を行っています。 テンプレートxmlを読み込んで、その中のルートエレメント名やノード名を取得しようと思っているのですが、xmlが <root> <datas> <key>${0}</key> <value>${1}</key> </datas> </root> こういう形の場合はうまく取得できるのですが、 <?xml version="1.0" encoding="utf-8"?> <root> <datas> <key>${0}</key> <value>${1}</value> <extdatas> <extra>${2-}</extra> </extdatas> </datas> </root> こういう形になると、うまく取得が出来ずに困っています。具体的には、<extdatas>の中の<extra>ノード名の取得がうまくいきません。ソースを載せます。 // 読み込みの起点であるルートエレメントの取得 MSXML2::IXMLDOMElementPtr depRoot = pDoc->documentElement; // ルートエレメント名取得 m_bsRootName = depRoot->nodeName; MSXML2::IXMLDOMNodeListPtr dnpNodeList = depRoot->childNodes; // ノードの数を取得 int nNodeListSize = dnpNodeList->Getlength(); if( nNodeListSize == 0 ) { _tprintf( _T("ノードが見つかりませんでした。") ); return false; } // ノードの数だけ回す for( int i=0; i<nNodeListSize; i++ ) { MSXML2::IXMLDOMElementPtr depNode = dnpNodeList->Getitem(i); // ノード名取得 m_bsNodeName = depNode->nodeName; // 子ノード MSXML2::IXMLDOMNodeListPtr dnpChildNodeList = depNode->childNodes; // 子ノードの数を取得 int nChildNodeListSize = dnpChildNodeList->Getlength(); if( nChildNodeListSize != 0 ) { // 子ノードの数分回す for( int j=0; j<nChildNodeListSize; j++ ) { MSXML2::IXMLDOMElementPtr depChildNode = dnpChildNodeList->Getitem(j); // ノード名取得 m_vbsChildNodeNameList.push_back(depChildNode->nodeName); // 子ノードのテキスト取得 m_vbsNodeTextList.push_back(depChildNode->text); } } } このソースでは、最初のxmlの形では取得できるのですが・・・・・・・・ なにぶん素人なのでソースが間違えているかもしれませんので、その時はご指摘宜しくお願い致します。 そもそも、こういう事事態しないものなのでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.