Ich machte einen XML-Export der Datensätze in meiner Datenbank und ich möchte eine Importfunktion ausführen.Qt XML Parsing mit QXmlStreamReader
Meine XML sieht wie folgt aus:
<Group1>
<Group1Element>
<ID>1</ID>
<Name>First</Name>
</Group1Element>
<Group1Element>
<ID>2</ID>
<Name>Second</Name>
</Group1Element>
</Group1>
<Group2>
<Group2Element>
<ID>1</ID>
<Nickname>fir</Nickname>
<Name>First Name</Name>
</Group2Element>
<Group2Element>
<ID>2</ID>
<Nickname>sec</Nickname>
<Name>Second Name</Name>
</Group2Element>
</Group2>
Gruppe1 ist eine Tabelle, aus meiner Datenbank und Group2 ist eine andere Tabelle. Ich habe zwei Methoden, um die zwei Tabellensätze aus der XML-Datei zu lesen, aber egal, was ich tue, nur die erste Gruppe in der XML wird importiert. Wenn Gruppe1 die erste ist, die importiert wird, wenn Gruppe2 die erste in der Datei ist, wird diese importiert. Wenn die Lesemethode der zweiten Gruppe ausgeführt wird (in diesem Fall readGroup2()), wird die erste while-Schleife nur dreimal ausgeführt und nach "Group1 -> Group1Element -> ID" gestoppt. Was fehlt mir hier?
Hier ist mein Code:
void Import::readGroup1(QString filepath)
{
QFile file(filepath)
file.open(QIODevice::ReadOnly);
QXmlStreamReader stream(&file);
while(stream.readNextStartElement() && !stream.isEndDocument())
{
if(stream.name() == "Group1Element")
{
qDebug() << " ";
while(stream.readNext() && !stream.isEndElement())
{
if(stream.name() == "ID" || stream.name() == "Name")
{
qDebug() << stream.readElementText();
}
}
}
}
file.close();
}
void Import::readGroup2(QString filepath)
{
QFile file(filepath)
file.open(QIODevice::ReadOnly);
QXmlStreamReader stream(&file);
while(stream.readNextStartElement() && !stream.isEndDocument())
{
if(stream.name() == "Group2Element")
{
qDebug() << " ";
while(stream.readNext() && !stream.isEndElement())
{
if(stream.name() == "ID" ||
stream.name() == "Nickname" ||
stream.name() == "Name")
{
qDebug() << stream.readElementText();
}
}
}
}
file.close();
}
Haben Sie diesen Code in einem Debugger tatsächlich durchlaufen, um zu sehen, was passiert? In seiner jetzigen Form ist das nicht wirklich eine sinnvolle Frage. – MrEricSir