我想用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;
我哪里错了?
答案 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>