2010-08-22 6 views
0

Pour un fichier XML qui aSur libxml, comment puis-je obtenir cette valeur de propriété?

<?xml version="1.0" encoding="utf-8"?> 
<COLLADA version="1.4.0" xmlns="http://www.collada.org/2005/11/COLLADASchema"> 
<library_geometries> 
    <geometry id="Cube"> 
    <mesh> 
    <source id="Cube"> 
    <float_array count="24" ">1 2 3</float_array> 
[..] 

Je reçois correctement la chaîne "1 2 3" avec un

if (!xmlStrcmp(cur_node->name, (const xmlChar *) "mesh") 
    printf(": %s\n",xmlNodeGetContent(cur_node->children->next); 

Mais comment puis-je obtenir la valeur de 'count'? ("count =" 24 "")

par exemple.

printf(": %s\n", xmlGetProp(cur_node->children->next,(const xmlChar *)"count")); 

n'est pas correct.

Répondre

1

La définition de xmlNodeGetContent est

Lire la valeur d'un nœud, cela peut être soit le texte directement porté par ce noeud si c'est un nœud de texte ou la chaîne globale des valeurs portées par ce nœud enfant (TEXT et ENTITY_REF). Les références d'entité sont substituées.

Ainsi ce qui se passe est que les points cur_node->children->next fait au niveau du noeud <source>, pas le nœud <float_array.... L'appel à xmlNodeGetContentapparaît pour fonctionner car il récupère le contenu du noeud contenu.

L'appel à xmlGetProp ne renvoie rien car vous l'appelez sur le mauvais noeud. Vous devez vous assurer que vous appelez xmlGetProp sur le nœud correct.

Questions connexes