Seite 1 von 1

Einfügen in ein XML-File

Verfasst: 1. Dezember 2009 18:05
von theheader
Hey

Ich habe folgendes XML-File:

Code: Alles auswählen

<?xml version="1.0" encoding="..."?>
<buddylist>
<buddy>
...
</buddy>
<buddy>
...
</budy>
</buddylist>
Ich möchte nun das File auslesen, gleichzeitig aber am Ende einige neue <buddy>-Elemente anfügen. Dazu habe ich folgenden Code, um ins File zu schreiben (der Teil, mit dem ich auslese, hab ich weggelassen, denn der funktioniert einwandfrei.)
QDomDocument doc;
if(!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn)) {
std::cerr << "Error: Parse error at line " << errorLine << ", "
<< "column " << errorColumn << ": "
<< qPrintable(errorStr) << std::endl;
return false;
}
QDomElement root = doc.documentElement();
QDomElement mainelem = doc.createElement("buddy");
QDomElement idelem = doc.createElement("Test");
QDomElement nameelem = doc.createElement("name");
mainelem.appendChild(idelem);
mainelem.appendChild(nameelem);
root.appendChild(mainelem);
QTextStream out(&file);
doc.save(out, 0);
Im Moment wird im xml-File am Ende das ganze Dokument mit den Modifikationen angefügt, jedoch wird das alte belassen! Das ergibt dann etwas in der Art von:

Code: Alles auswählen

<?xml ...?>
<buddylist>
...
</buddylist>
<?xml ...?>
<buddylist>
... mit modifizierten Elementen
</buddylist>
Kann mir jemand erklären, wieso das ganze kopiert und dann eingefügt wird??

gruss und danke
theheader

Verfasst: 1. Dezember 2009 19:09
von upsala
Du verwendest das selbe 'file' nochmal, ohne es zu schließen.

Verfasst: 1. Dezember 2009 22:08
von theheader
Danke vielmals!!