[gelöst]Parsing-Fehler in XML-Dokument

Alles rund um die Programmierung mit Qt
Antworten
Kay
Beiträge: 62
Registriert: 9. Dezember 2008 21:07

[gelöst]Parsing-Fehler in XML-Dokument

Beitrag von Kay »

Hallo Leute,

ich habe eine XML-Datei erstellt, um Projektdaten für meinen Editor speichern zu können.
Gespeichert wird wie folgt:

Code: Alles auswählen

out.setCodec("UTF-8");
		out<<DomDocument->toString(4).toUtf8();
	
Wobei die UTF-8 Codierung nachträglich hinzugefügt wurde und keinen Effekt hat.

Die Datei die gespeichert wird sieht wie folgt aus:

Code: Alles auswählen

<!DOCTYPE OSEditorProjektdatei>
<Project ProjectName="ProjektTest6.osp" />
<Files>
    <File FileName="unbenannt2.c" BuildCommand="" FileType="c" />
</Files>
Geladen wird sie wie folgt:

Code: Alles auswählen

QTextStream	In(&File);
		QString		XMLText;

		In.setCodec("UTF-8");

		XMLText=In.readAll();

		if(!DomDocument->setContent(XMLText.toUtf8(), &ErrorStr, &ErrorLine, &ErrorColumn))
		{
			QMessageBox::warning(this, tr("Fehler!"), tr("Projekt konnte nicht geladen werden! \n Fehler in Spalte %1, Zeile %2: %3").arg(ErrorColumn).arg(ErrorLine).arg(ErrorStr));
			return false;
		}
Wobei die UTF-8 Kodierung nur aus Redundanzgründen da ist und auch nichts an meinem Problem änderte. Ich habe auch schon der "setContent"-Funktion die Datei direkt als QIODevice übergeben, was das Problem auch nicht ändert.

Wenn ich nun aus meinem Programm heraus die Datei lade, erhalte ich beim Laden in der MessageBox folgende Fehlermeldung:
"Projekt konnte nicht geladen werden!"
"Fehler in Spalte 2, Zeile 3: unexpected character"

Wodurch kann dieser Fehler auftreten? Ich habe schon einiges probiert und auch die Datei mal mit Hand editiert, aber woher die Fehlermeldung kommt, konnte ich noch nicht rausfinden. Hat von euch jemand eine Idee?

Grüße,
Kay
Zuletzt geändert von Kay am 25. Januar 2009 21:26, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Zeile 3 ist bei dir <Files>. Das dürfte aber nicht mehr vorkommen, da dein DocumentElement schon 'Project' ist. Und dieses wurde zu früh geschlossen.
Kay
Beiträge: 62
Registriert: 9. Dezember 2008 21:07

Beitrag von Kay »

Hm,

Klingt einleuchtend. Und wie mache ich das dann, das Files mit zum Projekt gehört. Kannste da mal n kleines Beispiel geben? Muss das irgendwie so machen, dass ich jederzeit Files ranhängen kann.

Danke,
Kay
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

<!DOCTYPE OSEditorProjektdatei> 
<Project ProjectName="ProjektTest6.osp"> 
  <Files> 
    <File FileName="unbenannt2.c" BuildCommand="" FileType="c" /> 
  </Files> 
</Project>
Kay
Beiträge: 62
Registriert: 9. Dezember 2008 21:07

Beitrag von Kay »

Hallo,

ich hatte zwar mehr ein Code-Beispiel für die Umsetzung deiner Empfehlung gemeint, aber ich habs jetzt selbst rausbekommen, wie ich den Code umschreibe. Also danke dir.

Das Problem war, dass ich "Files" mit DomDocument->appendChild(Files) angehängt habe. Dadurch wurde dann quasi das zweite Wurzelelement aufgemacht. Hab die entsprechende Stelle jetzt in Root.appendChild(Files) geändert. Wobei Root halt der "Project"-Zweig ist. Jezt klappts soweit. Danke nochmal. Ist halt gut, wenn man sich mit XML auskennt ;)

Grüße,
Kay
Antworten