2017-04-07 78 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; 
}