Seite 1 von 1

QT && XML erweitern

Verfasst: 23. Dezember 2009 14:12
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

Verfasst: 23. Dezember 2009 14:18
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.

Verfasst: 23. Dezember 2009 14:39
von LiCeT
wow...das ging super schnell!!
vielen dank....funktioniert :-)

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

greetz