Salut à tout le monde,
Voilà je veux modifier le contenu d'un fichier XML et le problème c'est qu'au lieu d'avoir un fichier XML modifié, le résultat est:
le contenu de l'ancien fichier XML + le contenu du nouveau fichier XML

je commence avec :
<racine>
<balise1></balise1>
<balise2></balise2>
<balise3></balise3>
</racine>

et le résultat est:

<racine>
<balise1></balise1>
<balise2></balise2>
<balise3></balise3>
</racine>
<racine>
<balise1></balise1>
<balise2></balise2>
<balise3></balise3>
<balise4></balise4>
</racine>


alors que ce que je veux avoir c'est seulement la 2eme partie (ajouter la balise4):

<racine>
<balise1></balise1>
<balise2></balise2>
<balise3></balise3>
<balise4></balise4>
</racine>


Voici un aperçu de mon code (j'ai ommis la partie de création du noeud et de son insertion puisqu'elle marche correctement):


QTextStream out;
QString nomXML = "textures.xml";

QDomDocument doc("racine");
QFile file(nomXML);
out.setDevice(&file);

if(QDir().exists(textDir))
return -1;

if (!file.open(QIODevice::ReadWrite))
return -2; // pas de droit de lecture ou d'écriture

if (!doc.setContent(&file))
{
file.close();
return -3; // fichier pas ouvert correctement
}

QDomElement root = doc.documentElement();
if( root.tagName() != "racine" )
return -4;

//***************
// ici je crée les noeuds, le parcours l'XML et je fais un appendChild pour balise4
//***************


// insertion en début de document de <?xml version="1.0" ?>
QDomNode noeud = doc.createProcessingInstruction("xml","version=\"1.0\"");
doc.insertBefore(noeud,doc.firstChild());
// sauvegarde dans le flux (deux espaces de décalage dans l'arborescence)


doc.save(out,2);
file.close();
Je crois que l'a faute est faite lors de l'enregistrement mais je vois pas comment la corriger, j'ai essayé de faire:
doc.clear();
doc.save(out,2);
file.close();
return 0;

pour effacer le contenu avant d'enregistrer mais ça ne donne rien du tout, au contraire ça ne change même pas le fichier d'origine
Veuillez m'aider s'il vous plait