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

XML Discussion :

convetir les element d'un vecteur d'entiers en xmlchar


Sujet :

XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut convetir les element d'un vecteur d'entiers en xmlchar
    bonjour a tous,

    j'ai ecris un programme en c qui génére un fichier xml en utilisant la bibliothèque libxml2.

    mon programme dois prendre en entréé un vecteur d'entiers qui représenteront les attributs des elements du fichiers xml de sortie.

    par exemple j'ai le vecteur suivant: { 1,2,3,4}

    je veux avoir en sortie :

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <root>catalogue</root>
    <Bloc1 x1="1" y1="2"/>
    <Bloc1 x1="3" y1="4"/>

    Marci de m'aider.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut


    j'ai pas trouvé de solution le code suivant ne genère pas de problème lors de la compilation mais il me genere une erreur de segmantation lors de l'execution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    vector<int> iVect;
    const xmlChar *aa;
    while(i<2){
    aa=(const xmlChar*)iVect[i];
    noeud = xmlNewNode(NULL, (const xmlChar*)"Bloc1");
    xmlAddSibling(rootnode, noeud);
    xmlSetProp(noeud,(const xmlChar*)"x1", aa);
    }
    le vecteur n'est pas je l'est tester.

    Please je vous attends. Je dois la terminer aujourd'hui.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aa=(const xmlChar*)iVect[i];
    Ce bout de code suppose que iVect[i] est une adresse. Est-ce le cas ?
    Si oui, les adresses sont à récupérer avec des types long.
    Si non, cela expliquerai l'erreur.

    il vaut mieux créer un nouveau vecteur pour récupérer les éléments.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    Merci a vous tous.
    Je l'ai fais et le programme marche correctement et il me génère le fichier xml en mémoire.

    J'ai fais comme ceci:

    a partir du vecteur d'entier j'ai construi un vecteur de char* puis j'ai converti chaque element du vecteur en (const xmlchar*).

    le code est le suivant:

    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
     
    #include <sstream>
    #include <string>
     
    .............................
     
    typedef vector<int> Vect ;
    typedef vector<char *> VectS ;
     
    int main(int argc, char *argv[])
    {
    Vect iom ;
    VectS svect;
    for (int i=0; i<iom.size( ); ++i) {
    		// créer un flux de sortie
        		std::ostringstream oss;
        		// écrire un nombre dans le flux
        		oss << iom[i];
        		// récupérer une chaîne de caractères
        		std::string result = oss.str();
    		// créer le buffer pour copier la chaîne
       		 size_t size = result.size() + 1;
       		 char * buffer = new char[ size ];
       		 // copier la chaîne
       		 strncpy( buffer, result.c_str(), size );
       		 // utiliser le buffer
      		svect.push_back(buffer);
      		 // libérer la mémoire
       		 //delete [] buffer;
    	}
    return EXIT_SUCCESS;
    }

    je l'ai euuuuuuuuuuu!


  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Par défaut
    Sauf que pour libérer la mémoire sur vector<char *> VectS ;
    il faut le parcourir et faire un delete sur chaque éléments.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher les elements d'un vecteur
    Par mihaispr dans le forum C#
    Réponses: 0
    Dernier message: 13/07/2009, 13h06
  2. [Collections] classer les elements d'un vecteur
    Par smariteau dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 31/01/2006, 12h41
  3. [DIV] contenir les elements dans la balise div
    Par kemodo dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 11/10/2004, 20h43
  4. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51
  5. [VB6] [FileListBox] Récupérer les éléments sélectionnés
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 09h11

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