0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#include "courseparser.h"
courseParser::courseParser()
{
}
courseParser::courseParser(QString &XMLFilePath)
: _XMLFilePath(XMLFilePath)
{
startParsing();
}
void courseParser::startParsing()
{
qDebug() << "Start working with xml";
try {
QFile _XMLFile(_XMLFilePath);
QXmlStreamReader _XMLReader(&_XMLFile);
if (_XMLFile.open(QIODevice::ReadOnly))
{
parseXml(_XMLReader);
_XMLFile.close();
} else
{
throw error::FileNotFound;
}
} catch (error causedError) {
emit somethingWentWrong(causedError);
}
qDebug() << "Finish working with xml";
}
void courseParser::parseXml(QXmlStreamReader &XMLReader)
{
qDebug() << "Start parsing xml";
while(!XMLReader.atEnd())
{
QString elementBuffer;
QString content;
XMLReader.readNext();
_actualToken = XMLReader.tokenString();
elementBuffer = XMLReader.name().toString();
_actualElement = (elementBuffer == "") ? _actualElement : elementBuffer;
content = XMLReader.text().toString();
checkToken();
switch (_tokens.indexOf(_actualToken)) {
case 0:
processStartElement();
break;
case 1:
processCharacters(content);
break;
case 2:
processEndElement();
break;
default:
break;
}
}
qDebug() << "Finish parsing xml";
}
void courseParser::checkToken()
{
if (!_tokens.contains(_actualToken))
throw error::CorruptedFile;
}
void courseParser::checkElement()
{
if (!(_elements.contains(_actualElement) || _subElements.contains(_actualElement)))
throw error::CorruptedFile;
}
void courseParser::processStartElement()
{
checkElement();
switch (_elements.indexOf(_actualElement)) {
case 0: _course = new course();
qDebug() << "\tNew course created!";
break;
case 1: _lesson = new lesson();
qDebug() << "\tNew lesson created!";
break;
case 2: _test = new test();
qDebug() << "\tNew test created!";
break;
̶Н̶а̶с̶р̶а̶л̶ сделал типо "парсер".
На сколько дерьмово получилось?
Запостил:
kpuBoKoder2000 ,
07.06.2020 (Updated 07.06.2020 )
Desktop # 0
- шо CorruptedFile, где CorruptedFile
Очень полезное исключение, сразу всё объясняет
gost # 0 ⇈
TEH3OPHblu_nemyx # 0 ⇈