QT && XML erweitern

Alles rund um die Programmierung mit Qt
Antworten
LiCeT
Beiträge: 4
Registriert: 23. Dezember 2009 12:36

QT && XML erweitern

Beitrag von LiCeT »

Hallo Leute,

ich versuche vergeblich ein vorhandenes XML-File um neue Einträge zu erweitern.
Das ganze soll eine kleine Adressbeschreibung darstellen.

Beim hinzufügen über die GUI sollen neue elemente erstellt, mit Inhalt gefüllt und an das bereits existierende XML angehängt werden.

Bisher werden die neuen Elemente allerdings an das Ende der Datei geschrieben. Das ganze sieht dann so aus!

Code: Alles auswählen

<adr>
    <pers id="1" >
        <vname>text</vname>
    </pers>
</adr>
<pers id="2" >
    <vname>text</vname>
</pers>
Das ist ein Ausschnit aus meinem Code zum erstellen und "anhängen" der neuen Elemente

Code: Alles auswählen

const int Indent = 4; 
	
	QFile file("adr.xml");
			if (!file.open(QIODevice::WriteOnly | QIODevice::ReadWrite))
				QMessageBox::information(this, tr("Open Error"),
							             tr("Couldn't open file!"));
	QDomDocument doc;
	if(!doc.setContent(&file)) {
		qDebug() << "setContent Error";
	}
	QDomElement root = doc.documentElement();

	QDomElement person = doc.createElement("person");
	QDomElement vname = doc.createElement("vname");

	doc.appendChild(person);
	person.appendChild(vname);
	QDomText vnameText = doc.createTextNode(ui.VnameEdit->text());
	person.appendChild(name);

	vname.appendChild(vnameText);

	QTextStream out(&file);
	doc.save(out, Indent);
	file.close();
Ich bin was QT betrifft ein ziemlicher neuling vielleicht kann mir hier ja jemand helfen.

thx

LiCeT
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Mach dir Debug-Ausgaben!
Dann merkst du, dass doc.appendChild() in die Hose geht ;)
Du suchst doc.documentElement().appendChild()
QDomElement QDomDocument::documentElement () const
Returns the root element of the document.
LiCeT
Beiträge: 4
Registriert: 23. Dezember 2009 12:36

Beitrag von LiCeT »

wow...das ging super schnell!!
vielen dank....funktioniert :-)

werde bestimmt das eine oder andere mal noch fragen haben :D

greetz
Antworten