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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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>
le xmlXPathObject retourné est vide alors qu'il y a bien un noeud <asset> fils de <COLLADA>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 xmlXPathEvalExpression((xmlChar *)"/COLLADA/asset", xpathCtx);
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
Partager