#include "lfrxmlhandler.h" #include LFRXmlHandler::LFRXmlHandler(QObject *parent) : QObject(parent) { } /*! Reset the state of the handler to ensure that new documents are read correctly. We return true to indicate that parsing should continue. */ bool LFRXmlHandler::startDocument() { elementName.clear(); elementIndentation.clear(); indentationLevel = 0; return true; } /*! Process each starting element in the XML document. Append the element name to the list of elements found; add its corresponding indentation level to the list of indentation levels. Increase the level of indentation by one column. We return true to indicate that parsing should continue. */ bool LFRXmlHandler::startElement(const QString &, const QString &, const QString & qName, const QXmlAttributes &) { elementName.append(qName); elementIndentation.append(indentationLevel); indentationLevel += 1; if (qName == "EventBinary") { emit displayMessage("EventBinary detected"); } return true; } /*! Process each ending element in the XML document. Decrease the level of indentation by one column. We return true to indicate that parsing should continue. */ bool LFRXmlHandler::endElement(const QString &, const QString &, const QString & qName) { if (qName == "EventTime") { emit displayMessage("/EventTime detected"); } indentationLevel -= 1; return true; } /*! Report a fatal parsing error, and return false to indicate to the reader that parsing should stop. */ bool LFRXmlHandler::fatalError (const QXmlParseException & exception) { qWarning() << QString("Fatal error on line %1, column %2: %3").arg( exception.lineNumber()).arg(exception.columnNumber()).arg( exception.message()); return true; } /*! Return the list of element names found. */ QStringList& LFRXmlHandler::names () { return elementName; } /*! Return the list of indentations used for each element found. */ QList& LFRXmlHandler::indentations () { return elementIndentation; } void LFRXmlHandler::packetStoreHasChanged(QList *ccsdsPacketStore) { this->ccsdsPacketStore = ccsdsPacketStore; }