Seite 1 von 1

XML Datei auslesen

Verfasst: 31. Juli 2010 22:42
von Luna1987
Hallo.
Ich würde gerne ein einfaches XML-Dokument auslesen. Folgendes habe ich bisher programmiert:

Code: Alles auswählen

QString fileName = QFileDialog::getOpenFileName(this,
     tr("Open XML-File"), "/home", tr("XML Files (*.xml)"));

	QDomDocument doc( "Hauptkatalog" );
	QFile file( fileName );
	QDomElement root = doc.documentElement();

	QDomNode n = root.firstChild();
	while( !n.isNull() )
	{
		QDomElement e = n.toElement();
		if( !e.isNull() )
		{
			if( e.tagName() == "Rolle" )
			{
				QString name = e.attribute( "Name", "" );
				QString kategorie= e.attribute( "Kategorie", "" );
				QString beschreibung = e.attribute( "Beschreibung", "" );
				QString tags = e.attribute("Tags", "");

				QMessageBox::information( 0, "Rolle", name + "\n" + kategorie + "\n" + beschreibung + "\n" + tags);
			}
		}	

	n = n.nextSibling();
	}

	file.close();
Leider geht er gar nicht erst in die Bedingung "while( !n.isNull() )" rein. Beim Debuggen sehe ich, dass er gar keine Elemente hat (siehe Anhang). Wie kommt das? Habe es mit mehrere XML-Dateien versucht, liegt also sicherlich nicht daran, dass die Datei irgendwie einen falschen Aufbau hat?!?

Danke für eure Hilfe.
Lg Luna :-)

Verfasst: 1. August 2010 07:42
von franzf
Du füllst nirgendwo dein QDomDocument mit den Daten aus deiner Datei :P
Schau dir nochmal das Beispiel in der Doku zu QDomDocument an, du wirst gleich erkennen welche Zeile dir fehlt.
(HINT: engl. für "setze Inhalt" ;))

Verfasst: 1. August 2010 17:01
von Luna1987
Hy franzf.

Danke :-)

Musste nur noch

Code: Alles auswählen

if (!doc.setContent(&file)) {
		file.close();
		return 0;
	}
hinzufügen und dann ging´s.
DANKE :-)

Lg Luna