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):
Je crois que l'a faute est faite lors de l'enregistrement mais je vois pas comment la corriger, j'ai essayé de faire:
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();
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
Partager