Collada用libxml2加载

时间:2010-08-09 01:07:36

标签: c++ libxml2 collada

我想用libxml2加载collada。 我得到了COLLOADA节点,好吧,然后我尝试获取子标签 - 失败,子标签名称是“文本”。 为什么?我怎样才能得到COLLADA节点的孩子?

xmlNode* geometries = xmlDocGetRootElement(doc)->children;

//at THIS point the geometries->name == "text"  WHY?
//IS not it supposed to be "asset"?

while(!xmlStrcmp(geometries->name, (const xmlChar*)"library_geometries")) 
geometries = geometries->next;


xmlNode* mesh = geometries->children;
for(uint i = 0; i < idx; i++)
mesh = mesh->next;

我哪里错了?

2 个答案:

答案 0 :(得分:0)

好的,问题解决了。 在每个 - &gt;孩子和 - &gt;接下来我不得不放另一个 - &gt;接下来(我不是指递归:))。 顺便说一句,我不知道为什么,但它的工作原理。

答案 1 :(得分:0)

从libxml2网站this example中查看此方法:

static void
print_element_names(xmlNode * a_node)
{
    xmlNode *cur_node = NULL;

    for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
        if (cur_node->type == XML_ELEMENT_NODE) {
            printf("node type: Element, name: %s\n", cur_node->name);
        }
    }

    print_element_names(cur_node->children);
}

请注意,此代码在打印其名称之前检查节点是否为XML_ELEMENT_NODE类型。您正在阅读的"text"节点是开始标记和结束标记之间的文本:

<myTag>This is the text between the tags</myTag>