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 :

tinyXml et pointeurs fous


Sujet :

XML

  1. #1
    Invité
    Invité(e)
    Par défaut tinyXml et pointeurs fous
    Bonjour à tous,
    dans la cadre du développement d'une application je dois utiliser tinyXml. J'utilise beaucoup de composants comme des noeuds, des attributs, du texte...par des new. Par la suite je dois sauvegarder tous ces composants dans un fichiers xml. Mais je ne peux faire cette sauvegarde seulement à la fin lorsque toutes mes classes se sont générés en XML (chaque classe fait remonter son bout de XML pour assembler le document final).
    Par la suite je ne peux donc pas retrouver mes pointeurs et je ne peux pas me permettre de parser le fichier XML, cela serait trop couteux.
    Y aurait il une solution à ce problème de pointeurs fous ?

    Merci beaucoup.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut

    Les pointeurs intelligents. -> std::auto_ptr
    Ou bien boost::shared_ptr par exemple....

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Je ne comprends pas le probleme:

    tu dois avoir un model metier qui sait se sauver en xml, et aussi de charger a partir d'un xml. Je ne vois pas du tout de probleme de pointeurs

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    J'ai pas bien compris non plus celà dit... Les pointeurs intelligents sont une chose, et ça marche bien...
    Mais là tu devrais pouvoir t'en passer avec une conception qui tient la route !

  5. #5
    Invité
    Invité(e)
    Par défaut Explications de tinyXML et des pointeurs fous
    C'est vrai que j'ai peut être mal expliqué, prenons l'exemple suivant :
    Imaginons que le produit final est une 'Voiture' (attributs : marque, modèle) :
    Une 'Voiture' est composée d'une liste d' 'Element'
    Les 'Element' peuvent être :
    - 'Carrosserie' (attributs : description, peinture, typeMetal, poids)
    - 'TableauDeBord'
    Un 'TableauDeBord' est composé d'une liste d' 'Objet'
    Les 'Objet' peuvent être :
    - 'CompteurVitesse' (attributs : vitesseMin, vitesseMax)
    - 'JaugeEssence' (attributs ...)
    - 'Kilometrage' (attributs ...)

    'Voiture' va se générer en XML :
    <Voiture marque="Ferrari" modele="F50">
    //chaque éléments se générent en XML ici
    </Voiture>

    Prenon l'exemple de tableau de bord :
    <TableauDeBord>
    <CompteurVitesse vitesseMin="0" vitesseMax="500"/>
    <JaugeEssence/>
    <Kilometrage/>
    </TableauDeBord>

    Pour générer les objets de Tableau de bord en XML il y a donc une boucle comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TiXmlElement *tabBord = new TiXmlElement("TableauDeBord")
    while (it != objectList.end())
    {
      TiXmlElement *object = new TiXmlElement( (*it)->getName);
      tabBord->LinkEndChild(object);
    }
    Par la suite quand ma voiture est assemblée en XML je fais un save. Mais le problème est comment je retrouve les objets ou j'ai fait un :
    TiXmlElement *object = new TiXmlElement( (*it)->getName); ?
    L'autre condition est que je ne dois pas faire de liste de ces objets TiXmlElement *object, et je ne dois pas reparcourir le fichier Xml pour detruire noeud par noeud.
    Est cer que l'on ne pourrait pas effacer l'objet une fois que le noeud est ajouté ? (faire un delete après le tabBord->LinkEndChild(object); )
    Comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TiXmlElement *tabBord = new TiXmlElement("TableauDeBord")
    while (it != objectList.end())
    {
      TiXmlElement *object = new TiXmlElement( (*it)->getName);
      tabBord->LinkEndChild(object);
      delete object;
    }
    A priori non, mais quelque chose du même style et qui soit autorisé ?
    Dernière modification par r0d ; 05/06/2007 à 14h39.

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Après une brève recherche sur le forum: http://www.developpez.net/forums/sho...er+it%E9rateur

    Après une brève recherche sur la :
    http://c.developpez.com/faq/cpp/inde...ssion_elements


  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    à vue de nez, ton architecture est une composition. Rien de tel qu'un vieux pattern Factory super simple, et le tour est joué.

    ps: en effet, pensez à la balise [code]

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    si tu veux garder la trace des objets alloués pour pouvoir les detruire alors la factory c'est la solution. En meme temps, je ne genererais pas le fichier xml de cette maniere, je l'ecrirais simplement dans un flux. (a la maniere d'un XmlWriter en .NET ou Java). ca serait bien plus rapide, pas de memoire en plus etc...

  9. #9
    Invité
    Invité(e)
    Par défaut Merci beaucoup
    Merci de m'avoir éclairé sur mon problème, je vais sur vos conseils explorer la factory et le flux.

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

Discussions similaires

  1. pointeurs
    Par ghost74 dans le forum C
    Réponses: 3
    Dernier message: 14/12/2002, 02h52
  2. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43
  3. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  4. djgpp et pointeurs far -2
    Par elvivo dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 29/07/2002, 22h43
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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