| 55 | } |
| 56 | |
| 57 | int XmlReport::determineVersion(const QString &filename) |
| 58 | { |
| 59 | QFile file; |
| 60 | file.setFileName(filename); |
| 61 | const bool succeed = file.open(QIODevice::ReadOnly | QIODevice::Text); |
| 62 | if (!succeed) |
| 63 | return 0; |
| 64 | |
| 65 | QXmlStreamReader reader(&file); |
| 66 | while (!reader.atEnd()) { |
| 67 | switch (reader.readNext()) { |
| 68 | case QXmlStreamReader::StartElement: |
| 69 | if (reader.name() == QString(ResultElementName)) { |
| 70 | QXmlStreamAttributes attribs = reader.attributes(); |
| 71 | if (attribs.hasAttribute(QString(VersionAttribute))) { |
| 72 | const int ver = attribs.value(QString(), VersionAttribute).toString().toInt(); |
| 73 | return ver; |
| 74 | } |
| 75 | return 1; |
| 76 | } |
| 77 | break; |
| 78 | |
| 79 | // Not handled |
| 80 | case QXmlStreamReader::EndElement: |
| 81 | case QXmlStreamReader::NoToken: |
| 82 | case QXmlStreamReader::Invalid: |
| 83 | case QXmlStreamReader::StartDocument: |
| 84 | case QXmlStreamReader::EndDocument: |
| 85 | case QXmlStreamReader::Characters: |
| 86 | case QXmlStreamReader::Comment: |
| 87 | case QXmlStreamReader::DTD: |
| 88 | case QXmlStreamReader::EntityReference: |
| 89 | case QXmlStreamReader::ProcessingInstruction: |
| 90 | break; |
| 91 | } |
| 92 | } |
| 93 | return 0; |
| 94 | } |