2017-04-07 9 views
0

私はXMLとXMLパーサーでは扱ったことがなく、OpenGLでモデルアニメーション用のCOLLADAドキュメントを解析したかったのです。XMLファイルの解析:ルートノードには子ノードがありません

私はtinyxml2パーサーを使用しています。私はそれに間違ったことをしているようです。

XMLDocument _doc; 
_doc.LoadFile(path.c_str()); 

XMLNode* pRoot = _doc.FirstChild(); 

XMLNode* pElement = pRoot->FirstChildElement("library_geometries"); 

私はXcodeで作業しています。デバッグモードでは、pRootには子ノードがないこともわかります。

答えて

1

tinyxml2ではすべてが要素ではなくノードです。だから_doc.FirstChild()は、<COLLADA>要素の前のノード(たぶんXMLヘッダの属性)に連れて行くので役に立たない。必要なのはドキュメント内の最初の子要素です。つまり、<COLLADA>の後に最初に<library_geometries>という要素が続きます。 このお試しください:

#include "tinyxml2.h" 
using namespace tinyxml2; 
int main() 
{ 
    XMLDocument doc; 
    doc.LoadFile ("collada.xml"); 

    auto colladaElement = doc .FirstChildElement(); 
    auto lib_geomElement = colladaElement -> FirstChildElement("library_geometries"); 

    return 0; 
} 

をそして、あなたはC++ 11月14日の経験の多くをしたい場合は、上記にを低減私tinyxml2 extension試みることができる:

#include "tixml2ex.h" 
int main() 
{ 
    tinyxml2::XMLDocument doc; 
    doc.LoadFile ("collada.xml"); 
    auto lib_geomElement = find_element (doc, "COLLADA/library_geometries"); 

    return 0; 
} 
関連する問題