2013-03-10 28 views
6

Chcę odczytać plik XML przy użyciu QXmlStreamReader, ale naprawdę nie wiem, gdzie jest problem. Moja funkcja odczytuje zawartość pierwszego tagu, ale potem przestaje.Odczytywanie pliku XML przy użyciu QXmlStreamReader

Forma pliku XML:

<?xml version="1.0" encoding="utf-8"?> 
    <student> 
     <firstName>mina</firstName> 
     <lastName>jina</lastName> 
     <grade>13</grade> 
    </student> 
    <student> 
     <firstName>Cina</firstName> 
     <lastName>fina</lastName> 
     <grade>13</grade> 
    </student> 

Funkcja:

void MainWindow::open() { 
    QFile file(QFileDialog::getOpenFileName(this,"Open")); 
    if(file.open(QIODevice::ReadOnly)) { 
     QXmlStreamReader xmlReader; 
     xmlReader.setDevice(&file); 
     QList<Student> students; 
     xmlReader.readNext(); 
     //Reading from the file 
     while (!xmlReader.isEndDocument()) 
     { 
      if (xmlReader.isStartElement()) 
      { 
       QString name = xmlReader.name().toString(); 
       if (name == "firstName" || name == "lastName" || 
         name == "grade") 
       { 
        QMessageBox::information(this,name,xmlReader.readElementText()); 
       } 
      }else if (xmlReader.isEndElement()) 
      { 
       xmlReader.readNext(); 
      } 
     } 
     if (xmlReader.hasError()) 
     { 
      std::cout << "XML error: " << xmlReader.errorString().data() << std::endl; 
     } 
    } 
} 

Odpowiedz

6

Problem był w postaci dokumentu XML. Musiałem utworzyć tag główny.

Nowa forma dokumentu jest:

<?xml version="1.0" encoding="utf-8"?> 
    <students> 
     <student> 
      <firstName>mina</firstName> 
      <lastName>jina</lastName> 
      <grade>13</grade> 
     </student> 
     <student> 
      <firstName>Cina</firstName> 
      <lastName>fina</lastName> 
      <grade>13</grade> 
     </student> 
    </students> 
Powiązane problemy