[libXML] Utilisation d'un espace de noms
Bonjour,
je suis en train de faire un parser de fichiers COLLADA (fichier d'échange pour les applications 3D) qui sont des fichiers XML. J'utilise la lib libXML et j'ai envie d'utiliser la composante XPath.
Petit extrait d'un fichier COLLADA :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?xml version="1.0" encoding="utf-8"?>
<COLLADA version="1.4.1" xmlns="http://www.collada.org/2005/11/COLLADASchema">
<asset>
<contributor>
<author>toto</author>
<authoring_tool>truc muche</authoring_tool>
<comments>joli commentaire</comments>
<source_data>file</source_data>
</contributor>
<created>2008-06-24T13:58:40Z</created>
<modified>2008-06-24T13:58:42Z</modified>
<unit meter="0.0254" name="inch"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_materials>
<material id="_1_-_Default" name="_1_-_Default">
<instance_effect url="#_1_-_Default-fx"/>
</material>
</library_materials> |
Mon problème est apparemment un problème de namespace car si j'essaye de récupérer par exemple le nœud <asset> fils de <COLLADA> par ceci :
Code:
1 2 3
|
xmlXPathEvalExpression((xmlChar *)"/COLLADA/asset", xpathCtx); |
le xmlXPathObject retourné est vide alors qu'il y a bien un noeud <asset> fils de <COLLADA>.
Si, dans mon fichier, j'enlève l'attribut xmlns du noeud <COLLADA> alors ça marche. En fait, je vois bien à quoi sert un namespace mais je ne sais pas comment dire à ma lib (libXML) "donne-moi tous les /COLLADA/asset de l'espace de nommage http://www.collada.org/2005/11/COLLADASchema" ..
Merci bcp