我做了我的數據庫中的記錄的XML導出,我想做一個導入函數。用QXmlStreamReader Qt XML解析
我的XML看起來是這樣的:
<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>
組別1是從我的數據庫中的表和第2組是另一個表。我有兩種方法可以從XML文件中讀取兩個表記錄,但不管我只做XML中的第一個組導入。如果Group1是第一個,那麼它被導入,如果Group2是文件中的第一個,那麼就導入它。 當第二組的read方法運行時(在本例中爲readGroup2()),第一個while循環只運行三次,並在「Group1 - > Group1Element - > ID」後停止。 我在這裏錯過了什麼?
這裏是我的代碼:
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();
}
你真的在調試器中通過這段代碼來看看發生了什麼嗎?在目前的形式下,這不是一個真正有意義的問題。 – MrEricSir