2017-04-07 107 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工作,並在調試模式下,我可以看到,P成分爲NULL也是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; 
}