Qt Reading Xml File QXmlStreamReader - stuck in a loop

SamB

New Member
Heres the format of XML I want to read:\[code\]<base> <pasta>name <musica>my audio.mp3</musica> <musica>my audio.mp3</musica> <musica>my audio.mp3</musica> <musica>my audio.mp3</musica> </pasta> <pasta>name2 <musica>my audio.mp3</musica> <musica>my audio.mp3</musica> </pasta></base>\[/code\]The code I am using to read the xml:\[code\]QList<PastaBase>* BaseWrapper::carregarDeXml(QString caminhoArquivoXml){ //Carrega do XML QFile arquivoXml(caminhoArquivoXml); if(!arquivoXml.open(QIODevice::ReadOnly)) { QString s(QString::fromUtf8("Erro ao abrir arquivo de base")); QMessageBox::warning(0, "Erro", s); throw QString("Erro ao abrir arquivo de base"); } QList<PastaBase> *base = new QList<PastaBase>(); QXmlStreamReader r; r.setDevice(&arquivoXml); while(!r.atEnd() && !r.hasError()) { r.readNext(); if(r.isStartElement()) { if(r.name().toString() == QString("pasta")) { PastaBase p; p.setNome(r.readElementText()); r.readNextStartElement(); while(r.name().toString() == QString("musica")) { std::cout << "elemento: " << r.name().toLatin1().constData() << " - valor: " << r.readElementText().toLatin1().constData() << std::endl; p.getMidias()->append(r.readElementText()); r.readNextStartElement(); } base->append(p); } } } arquivoXml.close(); return base;}\[/code\]The output - stuck in while loop:\[code\]elemento: musica - valor: elemento: musica - valor: elemento: musica - valor: elemento: musica - valor: elemento: musica - valor: elemento: musica - valor: elemento: musica - valor: elemento: musica - valor:.........\[/code\]
 
Back
Top