2010-08-09 7 views
0

Je veux charger collada avec libxml2. Je reçois le noeud COLLOADA, d'accord, puis j'essaie d'obtenir la balise enfants - FAIL, le nom de balise enfants est "texte". Pourquoi? Comment puis-je obtenir l'enfant du noeud COLLADA?Collada chargement avec libxml2

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; 

Où est-ce que je me trompe?

Répondre

0

Jetez un oeil à cette méthode de this example sur le site libxml2:

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); 
} 

Notez que ce code vérifie si un noeud est de type XML_ELEMENT_NODE avant d'imprimer son nom. Le nœud "text" que vous lisez est le texte entre les balises d'ouverture et de fermeture:

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

Bon, problème résolu. A chaque -> enfants et -> ensuite je devais mettre un autre -> suivant (je ne veux pas dire récursivement :)). Btw. Je ne sais pas pourquoi, mais ça fonctionne de cette façon.