xerces-c et pobleme de programmation
voila mon code :
Code:
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;
} |
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 :
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 ?