XML - File einlesen und auslesen mit der DOM-Api von Qt?

Alles rund um die Programmierung mit Qt
Antworten
Qt_Starter
Beiträge: 23
Registriert: 16. November 2007 21:04

XML - File einlesen und auslesen mit der DOM-Api von Qt?

Beitrag von Qt_Starter »

Hallo,

ich bin gerade erst dabei mich in Qt zurecht zu finden und hab leider noch das ein oder andere Problem ... :(
Mein Problem besteht darin, das ich ein XML - File einlesen soll, muss es auch noch manipulieren und danach wieder als XML - File speichern. Dabei habe ich zunächst versucht mit Hilfe des Buches "Qt4, Einführung in die Applikationsentwicklung" das Problem anzugehen. Jedoch war das bisher noch nicht so erfolgversprechend ...
Ich habe das XML-File eingelesen und habe dabei alle mir bekannten (auch die aus der Qt-Doku) verwendet um die Datei einzulesen. Dies funktioniert bis zur Übertragung der Daten an das QByteArray "content" fehlerfrei. Jedoch treten bei der "Transformation" zu einem QDomDocument Fehler auf.
Mein Programm sieht folgendermaßen aus:

Code: Alles auswählen

QFile file("wechsel.xml");
if (!file.open(QIODevice::ReadOnly))
       return 1;
QByteArray content = file.readAll();
QString StrContent = QString::QString(content);   
QString errorMessage;
int line, col;
QDomDocument doc;
    if(!doc.setContent(StrContent, false, &errorMessage, &line, &col))
    {
        cout << "Error in Line " << line << ", Column " << col << ":"
                     << qPrintable(errorMessage) << endl;
        return 1;
    }   
file.close();

QByteArray Output;
Output = doc.toByteArray(1);	

Hier das originale XML – File, “wechsel.xml” :

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root>
    <book name="MissionToFix">
        <title name="SaveString">cd &apos;C:\Programme\DTT\Examples\Books\Bookland&apos;</title>
        <title name="buffer">heap</title>
        <title name="NewFileName">..\..\DTT\Examples\Books\savebuffer.cpp</title>
        <title name="Book">false</title>
    </book>
    <book name="FirstRoot">
        <title name="Magic">3</title>
        <title name="version">12</title>
    </book>
    <book name="Potter">
        <title name="isbn">45</title>
        <title name="Verlag">BookLand</title>
    </book>        
</root>	

Code: Alles auswählen

<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<root>
 <book name="MissionToFix" >
  <title name="SaveString" >cd 'C:\Programme\DTT\Examples\Books\Bookland'</title>
  <title name="buffer" >heap</title>
  <title name="NewFileName" >..\..\DTT\Examples\Books\savebuffer.cpp</title>
  <title name="Book" >false</title>
 </book>	
Code:

Die Fehler sind einerseits bei der XML-Deklaration ('' anstatt "") und im Abschnitt:

Code: Alles auswählen

<title name="SaveString" >


Kann mir da vielleicht jemand helfen?
Antworten