voila mon code :
mon probleme c'est que je veux lister toute les balises Material dans mon fichier et avoir son nom egalement ses attributs mais le probleme est cette instruction :
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 XMLPlatformUtils::Initialize(); XercesDOMParser *parser = new XercesDOMParser; parser->parse("/home/jalel/ski.xmt"); DOMElement *repertoire = parser->getDocument()->getDocumentElement(); DOMNodeList *Transform = repertoire->getElementsByTagName(XMLString::transcode("Transform")); //cout<<"le nombre de noeuds trasform est "<<Transform->getLength()<<endl; DOMNodeList *Material=repertoire->getElementsByTagName(XMLString::transcode("Material")); //cout<<"le nombre de noeud material est "<<Material->getLength()<<endl; XMLCh colorTab[Material->getLength()*2]; //cout<<"le nom de la balise "<<repertoire->getNamespaceURI(); int j=0; const XMLCh *xmlch(XMLString::transcode("Transform")); const XMLCh *Xml; DOMNamedNodeMap *e; cout<< "le nombre de noeud mat "<<Material->getLength()<<endl; if (Transform->getLength()>0) { for(int i=0;i<Material->getLength();i++) { cout <<i<<endl; DOMNode *st=Material->item(i)->getParentNode();cout<<" "<<st; //extraction du code RGB du coulueur de l'objet Xml=st->getNodeName(); while( *xmlch != *Xml ) { st=st->getParentNode(); Xml=st->getNodeName(); cout<<*Xml<<" "<<*xmlch<<" "<<st<<endl; } e=st->getAttributes();//["diffuseColor"].InnerText; cout<< e->getLength()<<endl; colorTab[j+1]=*(e->getNamedItem(XMLString::transcode("diffuseColor"))->getTextContent()); cout <<colorTab[j+1]<<endl; j=j+2; }
colorTab[j+1]=*(e->getNamedItem(XMLString::transcode("diffuseColor"))->getTextContent());
si je supprime cette instruction l'exécution donne plusieurs balises Material et avec cette instrction elle me donne une seule (en fait la premiere ) ?
Que dois je faire ?
Partager