voila le bout de code :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DOMNodeList * Forme = repertoire->getElementsByTagName(XMLString::transcode("geometry"));
string geomTab[Forme->getLength()*2];
cout<<"le nombre de balise Form est "<<Forme->getLength()<<endl<<endl;
j=0;
for(int i=0;i<Forme->getLength();i++)
    {    
     cout <<i;
     DOMNode *st=Forme->item(i);
     st=st->getFirstChild();
     cout<<"  _____  ";
     cout<<XMLString::transcode(st->getNodeValue());
     char * ST=XMLString::transcode(st->getNodeName());
               	 					while( strcmp(Tr,ST)   !=  0    )
               	 					{
               	 					cout<<"            "<<XMLString::transcode(st->getNodeName())<<endl;
               	 					st=st->getParentNode();
 
               	 					ST=XMLString::transcode(st->getNodeName());
               	 					}
               	 					e=st->getAttributes();  
               	 					XMLCh *nameAttri = XMLString::transcode("DEF");
               	 					DOMAttr *attri = (DOMAttr *) e->getNamedItem(nameAttri);
               	 					if (attri == NULL )
               	 					{
               	 						e=st->getParentNode()->getParentNode()->getAttributes();
               	 						attri = (DOMAttr *) e->getNamedItem(nameAttri);
               	 						XMLString::release(&nameAttri);
               	 					    geomTab[j]=XMLString::transcode(attri->getValue());
               	 						cout<<"         "<<geomTab[j];
               	 				     	cout<<endl;
               	 					}
               	 					else
               	 					{
               	 					XMLString::release(&nameAttri);
               	 				    geomTab[j]=XMLString::transcode(attri->getValue());
               	 					cout<<"            "<<geomTab[j];
               	 				    cout<<endl;
               	 					}
               	 					char * ch     ="IndexedFaceSet";
               	 				   if (geomTab[j+1].compare(ch) ==  0 )
               	 				   {
               	 					   geomTab[j+1]="Compound_Form";
               	 					cout<<"     he       "<<geomTab[j+1];
               	 				   }
 
               	 				j=j+2;
               	 				}
l'execution de ce code me donne :
le nombre de balise Form est 5

0 _____
#text =====> C'est ça l'erreur :elle doit m'afficher le nom d'une balise
geometry
Shape
children
SphereBleuCiel
1 _____
#text
geometry
Shape
children
SphereRose
2 _____
#text
geometry
Shape
children
Box
3 _____
#text
geometry
Shape
children
SphereViolet
4 _____
#text
geometry
Shape
children
Box01


voila un bout de fichier XML :
<Shape>
<appearance>
<Appearance>
<material>
<Material diffuseColor="0.898 0.6039 0.8431"/>
</material>
</Appearance>
</appearance>
<geometry>
<Sphere radius="12.5"/>
</geometry>
</Shape>
pour ce bout de fichier, au lieu de #text je dois avoir Sphere (nom de la balise fille de geometry)