PDA

View Full Version : QXmlStreamReader error on first line?



warry
13th August 2008, 12:32
I'm not really sure how to work with QXmlStreamReader yet so I'm not sure why it's not working correctly (got the writer to work fine...) Could anyone point out my mistake(s)? I'm getting these errors :

Current Text Invalid
XML ERROR:1: Premature end of document.

//QXmlStreamReader reader;


void XmlHandle::readData() {
std::cout << "Ready to read data\n";
if(!fileName.isNull()) {
QFile file(fileName);
if(file.open(QFile::ReadOnly | QFile::Text)) {
while(!reader.atEnd()) {
reader.readNext();

std::cout<< "reading Line\n";
if(reader.isStartElement()) {
std::cout << "At start element\n";
if(reader.name() == "volume") {
QString str = reader.attributes().value("address").toString();
std::cout << "Vol Attribute " << str.toStdString() << "\n";
}
else if(reader.name() == "text") {
QString str = reader.attributes().value("author").toString();
std::cout << "Text Attribute " << str.toStdString() << "\n";
str = reader.text().toString();
std::cout << "Text Chars " <<str.toStdString() << "\n";

}
else {
std::cout << "Nothing" << "\n";
}
}
else if(reader.isEndElement())
std::cout<< "End element\n";
else {
std::cout<< "Current Text " << reader.tokenString().toStdString() << "\n";
std::cout << "XML ERROR:" << reader.lineNumber() << ": " << reader.errorString().toStdString() << "\n";
}

}
if(reader.error() && reader.error() != QXmlStreamReader::PrematureEndOfDocumentError)
std::cout << "XML ERROR:" << reader.lineNumber() << ": " << reader.errorString().toStdString() << "\n";
//std::cout << "Error is : " << reader.errorString().toStdString() << "\n";
}
else {
std::cout << "Couldn't open " << fileName.toStdString();
}
}
else {
std::cout << "Could not fine file " << fileName.toStdString();
}
}


XML:


<?xml version="1.0" encoding="UTF-8"?>
<project version="1.0" project="Basa">
<volume number="2">
<chapter number="33">
<page name="ahh.jpg">
<bubble type="Rectangle" style="Normal" bgcolor="Qt::red">
<point x="20" y="20"/>
<point x="20" y="20"/>
<text style="Normal">It's time you be eodiijijoj</text>
</bubble>
<bubble type="Rectangle" style="Normal" bgcolor="Qt::red">
<point x="20" y="20"/>
<point x="20" y="20"/>
<text style="Normal">It's time you be eodiijijoj</text>
</bubble>
<bubble type="Rectangle" style="Normal" bgcolor="Qt::red">
<point x="20" y="20"/>
<point x="20" y="20"/>
<text style="Normal">It's time you be eodiijijoj</text>
</bubble>
</page>
</chapter>
</volume>
</project>

spirit
13th August 2008, 14:04
I don't see
reader.setDevice(&file);

warry
13th August 2008, 14:20
Ah, that's the line. Thanks a lot.