我做了我的数据库中的记录的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