IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

xerces-c et pobleme de programmation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Par défaut xerces-c et pobleme de programmation
    voila mon 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
    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 ?

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Bonjour, Merci tu connais ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Outre que ton code est un peu difficile à lire (déclare les variables au moment de les utiliser tant qu'à faire) je me demande s'il n'y a pas un problème là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XMLCh colorTab[Material->getLength()*2];
    ...
    colorTab[j+1]=*(e->getNamedItem(XMLString::transcode("diffuseColor"))->getTextContent());
    Donc mis à part que tu les stockes une case sur deux (pourquoi pas à la limite), ce code ne fonctionne que si 'diffuseColor' contient un seul caractère.
    Si c'est toute une chaîne, ça fait complètement n'importe quoi...

    MAT.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Bonjour, Merci tu connais ?
    Merci pour quoi ?

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Merci pour la futur aide qu'on pourrait te donner.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Par défaut merci
    et tu fais le tour des post où les gens ne disent pas merci par avance ? merci d'avance pour ta réponse.

Discussions similaires

  1. Pobleme avec un programme
    Par kepon72 dans le forum Général Python
    Réponses: 11
    Dernier message: 03/06/2009, 18h56
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo