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.
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:
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:
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é ?