Hilfe: Inhalt einer XML Datei ergänzen...

Alles rund um die Programmierung mit Qt
Antworten
xyrosi
Beiträge: 2
Registriert: 8. Februar 2007 15:34

Hilfe: Inhalt einer XML Datei ergänzen...

Beitrag von xyrosi »

Hallo zusammen!

Ich habe folgendes Problem und freue mich über jede Hilfe. Ich habe eine einfache XML Datei in folgender Form mit meinem Code erstellt.

Code: Alles auswählen

<test>
    <name>testuser</name>
    <holidays>
        <date>03.02.07</date>
        <date>04.02.07</date>
    </holidays>
</test>

Nachdem ich das Programm geschlossen habe, starte ich es erneut und möchte gerne ein weiteres Datum eintragen können.

Code: Alles auswählen

// ***** adds a new Date *****
QDomElement TESTINGXML::addDate (QString date_t)
{
	QDomElement	date = xmlDoc.createElement ("date");
	QDomText	dateText = xmlDoc.createTextNode (date_t);
	date.appendChild (dateText);
	
	QDomNode oldChild = getNode("holidays");

	oldChild.appendChild(date);

	return (date);
}

// ***** get a hole node *****
QDomNode TESTINGXML::getNode (QString param)
{
	QDomNode         node = root.firstChild ();
	QDomElement	element;

	while (!node.isNull())
	{
		element = node.toElement();
		if (!element.isNull())
			if (element.tagName() == param)
				return (node);
		node = node.nextSibling ();
	}

	element.clear();
	return (node);
}
Die Lösung bisher funktioniert so lange, wie ich die Datei geöffnet lasse. Öffne ich Sie erneut und will einen neuen Eintrag machen, sieht meine XML Datei folgendermaßen aus:

Code: Alles auswählen

<holiday>
    <name/>
    <date/>
</holiday>
Seit Tagen google ich nach allen möglichen Tutorials, Code Beispielen, etc. Doch leider konnte ich keine Lösung finden. Ich muss die Datei in diesem einfachen Format behalten und kann kein XML mit namspaces gebrauchen, wie im QT Dom Example beschrieben ist. ehrlich gesagt verstehe ich diese vorgensweise auch nicht.

Hat jemand eine andere Lösung für mich parat, oder findet den Fehler... :D ich wär sooooo Happy!
Bitte bedenkt, dass ich relativ neu hier und auf dem Gebiet QT bin.
xyrosi
Beiträge: 2
Registriert: 8. Februar 2007 15:34

Beitrag von xyrosi »

...ne ne ne - manchmal steht man doch echt wie ochs vorm berg...

naja, was solls. Ich hab den Fehler gefunden. Dank des Forums hab ich's sogar im Monolog gelöst :lol: *is ja nur spaß!*

hier der richtige code....der inhalt des Datums Feldes...also das Datum im Text format darf erst eingehangen werden, wenn schon der Element Tag Name (<date>) eingehangen wurde.

Code: Alles auswählen

// ***** adds a new Date *****
QDomElement TESTINGXML::addDate (QString date_t)
{
   QDomElement   date = xmlDoc.createElement ("date");
   QDomText   dateText = xmlDoc.createTextNode (date_t);
   
   QDomNode oldChild = getNode("holidays");

   oldChild.appendChild(date);         //zuerst Tag einhaengen
   date.appendChild (dateText);       //dann Wert des Tags setzten

   return (date);
}
Vielleicht kanns ja mal jemand gebrauchen!
Antworten