XML Datei speichern

Alles rund um die Programmierung mit Qt
Antworten
nkc
Beiträge: 67
Registriert: 3. November 2008 12:01

XML Datei speichern

Beitrag von nkc »

Hallo,

wie kann ich eine XML-Datei abspeichern?

Folgendermaßen erstellt:

Code: Alles auswählen

QDomElement root = doc.createElement("MyML");
    doc.appendChild(root);

    QDomElement tag = doc.createElement("Greeting");
    root.appendChild(tag);

    QDomText t = doc.createTextNode("Hello World");
    tag.appendChild(t);

    QString xml = doc.toString();
Und nun weiß ich nicht, wie man die Datei speichern kann.
Mein nächster Schritt wäre:

Code: Alles auswählen

QFileDialog::getSaveFileName(this, tr("Save File"),
                          "/Neues Dokument", tr("xml-File (*.xml)"));
Danke
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

Code: Alles auswählen

QString xml = doc.toString();
Das ist schon mal richtig. Was du noch benötigst ist QFile und QTextStream. In der Dokumentation von Qt findest du was du suchst. Wenn du damit mit zurrecht kommst einfach noch mal melden. :)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Eigentlich is der String nen Umweg

bei laengeren dom Documenten wirst da vielleicht in schwierigkeiten kommen.

Besser:
void QDomNode::save (QTextStream & str, int indent ) const;

Macht genau das was du willst, das ding (bei bedarf stueckchenweisse) in einen (Text)Stream reinschieben.

wie man von nem QtextStream auf ein QFile (Hinweiss QIODevice) kommt, verraet dir die Documentation auch .

Ciao ...
nkc
Beiträge: 67
Registriert: 3. November 2008 12:01

Beitrag von nkc »

Hallo,

ich hatte das genau so veruscht,
mit

Code: Alles auswählen

QDomNode::save..
Nur, irgendwie hat das nicht hin.
Kannst du das an dem oben genannten zeigen?

Danke
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

Die erste Möglichkeit ist:

Code: Alles auswählen

QFile qFile("C:/test.xml");
qFile.open( QIODevice::WriteOnly );

QTextStream out( &qFile );
out << xml;

out.flush(); // Würde ich jedem empfehlen
qFile.flush(); // Sicher ist sicher :-)
qFile.close();
Die zweite Möglichkeit ist:

Code: Alles auswählen

QFile qFile("C:/test.xml");
qFile.open( QIODevice::WriteOnly );

QTextStream out( &qFile );

node.save( out, 4 ); // "indent" sind glaube ich Leerzeichen
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Antworten