Hallo,
Ich bin einen Qt Anfänger, ich möchte eine Xml-Datei mit QXmlStreamReader lesen. Ich habe schon was was geshrieben aber es funktioniert nicht. Kann mir jemand sagen was in meiner Quellecode nicht stimmt oder ein besseren Vorschlag?
So sieht meine Quellecode:
void readFile(const QStream &ifileName)
{
QXmlStreamReader reader;
QFile file(fileName);
reader.setDevice(&file);
while(!reader.atEnd())
{
reader.readNext()
if(reader.isStartElement()) //reader.isStartElement soll true zurückgeben
{
if(reader.name() == "element") //Was bedeutet hier element ?
//Ist die Name des Wurzels meine XML-Datei
readXMLFile();
}else
{
reader.raiseError(QObject::tr("The File is not an Element version"));
}
}
}
QXmlStreamReader
Code: Alles auswählen
void readFile(const QStream &ifileName)
{
QXmlStreamReader reader;
QFile file(fileName);
reader.setDevice(&file);
while(!reader.atEnd())
{
reader.readNext()
if(reader.isStartElement()) //reader.isStartElement soll true zurückgeben
{
if(reader.name() == "element") //Was bedeutet hier element ?
//Ist die Name des Wurzels meine XML-Datei
readXMLFile();
}
else
{
reader.raiseError(QObject::tr("The File is not an Element version"));
}
}
}
Wo ist dein Problem genau ???
Deinen Reader schickst du in eine iterationsschleife, soweit sicher klar ...if(reader.isStartElement()) //reader.isStartElement soll true zurückgeben
reader.isStartElement() gibt genau dann true zurueck, wenn du beim XML Kopf quasi bist, also im ersten schritt der iterationsschleife bist, und dein XML dokument ueberhaupt sowas hat !
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?> if(reader.name() == "element") //Was bedeutet hier element ?
Code: Alles auswählen
<Project name="NM2StatusAutomat" type="trunk" version="" />Und nicht irritieren lassen, der Name des Elements, aus sicht des Parsers, ist hier "Project" !!!
Das "name= "NM2StatusAutomat"" ist ein Attribut des Elements, das Attribut hat den Namen"name" und den Wert "NM2StatusAutomat"....
Also XML Tags, also Elemente im Qt Jargon, sehen immer so aus
Kurzform:
Code: Alles auswählen
<TAGNAME ATTRIBUTNAME="ATTRIBUTVALUE" ATTRIBUTNAME="ATTRIBUTVALUE" />
Code: Alles auswählen
<TAGNAME ATTRIBUTNAME="ATTRIBUTVALUE" ATTRIBUTNAME="ATTRIBUTVALUE">
.... Unterelemente
</TAGNAME>
Attribute sind kein muss, kann beliebig viele haben aber auch garkeins
Ciao ...