From 91a75319dced0d6a1c1a7ae86f2b85789e5a43f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=93=D0=B0=D0=BB=D0=BA=D0=B8?= =?UTF-8?q?=D0=BD?= Date: Wed, 13 Jan 2021 18:34:31 +0000 Subject: [PATCH] Add new file --- addressbookparser.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 addressbookparser.cpp diff --git a/addressbookparser.cpp b/addressbookparser.cpp new file mode 100644 index 0000000..0228126 --- /dev/null +++ b/addressbookparser.cpp @@ -0,0 +1,98 @@ +#include "addressbookparser.h" +#include +#include +#include +#include + +AddressBookParser::AddressBookParser(QTreeWidget* tree, const QString& title): + treeWidget(tree), + currentItem(nullptr), + parsing_title(title) +{} + +bool AddressBookParser::startElement(const QString&, + const QString&, + const QString& tagName, + const QXmlAttributes&) { + if (tagName == "catalog") + { + currentItem = new QTreeWidgetItem(treeWidget); + currentItem->setText(0, parsing_title); + } + else if (tagName == "LINK" || tagName == "WebSite") + { + currentItem = new QTreeWidgetItem(currentItem); + currentItem->setText(0, tagName); + } + else + currentItem = new QTreeWidgetItem(currentItem); + currentItem->setFont(0, QFont("Times", 8)); + return true; +} + +bool AddressBookParser::characters(const QString& strText) +{ + currentText = strText; + return true; +} + +bool AddressBookParser::endElement(const QString&, const QString&, const QString& str) +{ + if (str != "array" && str != "catalog" && str != "LINK") + { + if (str == "EDU_NAME" || str == "FullName") + currentItem->parent()->setText(0, currentText); + if(str == "EDU_NAME" || str == "global_id" || str == "ID") + currentItem->setHidden(true); + if(str == "YEAR") + { + currentItem->setText(0, "Учебный период"); + currentItem->setText(1, currentText); + } + else if(str == "District") + { + currentItem->setText(0, "Район"); + currentItem->setText(1, currentText); + } + else if(str == "PASSES_OVER_220") + { + currentItem->setText(0, "Кол-во обучающихся, набравших не менее 220 баллов за 3 экзамена"); + currentItem->setText(1, currentText); + } + else if(str == "PASSER_UNDER_160") + { + currentItem->setText(0, "Кол-во обучающихся, набравших больше 160 баллов за 3 экзамена"); + currentItem->setText(1, currentText); + } + else if(str == "AdmArea") + { + currentItem->setText(0, "Административный округ"); + currentItem->setText(1, currentText); + } + else if(str == "OGE_SCORE") + { + currentItem->setText(0, "Кол-во обучающихсяб наюравших не менее 12 баллов за 3 экзамена"); + currentItem->setText(1, currentText); + } + else + { + currentItem->setText(0, str); + currentItem->setText(1, currentText); + } + currentItem = currentItem->parent(); + } + else if (str == "LINK" || str == "WebSite") + currentItem = currentItem->parent(); + else if (str == "array") + currentItem = currentItem->parent(); + + return true; +} + +bool AddressBookParser::fatalError(const QXmlParseException& exception) +{ + qDebug() << "Line:" << exception.lineNumber() + << ", Column:" << exception.columnNumber() + << ", Message:" << exception.message(); + return false; +} \ No newline at end of file -- GitLab