|
|
#include "lfrxmlhandler.h"
|
|
|
#include <QDebug>
|
|
|
|
|
|
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<int>& LFRXmlHandler::indentations ()
|
|
|
{
|
|
|
return elementIndentation;
|
|
|
}
|
|
|
|
|
|
void LFRXmlHandler::packetStoreHasChanged(QList<TMPacketToRead *> *ccsdsPacketStore)
|
|
|
{
|
|
|
this->ccsdsPacketStore = ccsdsPacketStore;
|
|
|
}
|
|
|
|