Isis 3 Programmer Reference
XmlStackedHandler.cpp
1
6/* SPDX-License-Identifier: CC0-1.0 */
7#include "XmlStackedHandler.h"
8
9#include <QDebug>
10#include <QStack>
11#include <QXmlParseException>
12
13#include "XmlStackedHandlerReader.h"
14
15namespace Isis {
16 XmlStackedHandler::XmlStackedHandler() {
17 m_reader = NULL;
18 m_depth = 0;
19 }
20
21
22 XmlStackedHandler::~XmlStackedHandler() {
23 m_reader = NULL;
24 m_depth = 0;
25 }
26
27
28 void XmlStackedHandler::setReader(XmlStackedHandlerReader *reader) {
29 m_reader = reader;
30 }
31
32
38 nextHandler->startElement(m_lastStartNamespaceURI, m_lastStartLocalName,
39 m_lastStartQName, m_lastStartAtts);
40 }
41
42
43 bool XmlStackedHandler::startElement(const QString &namespaceURI, const QString &localName,
44 const QString &qName, const QXmlAttributes &atts) {
45 m_lastStartNamespaceURI = namespaceURI;
46 m_lastStartLocalName = localName;
47 m_lastStartQName = qName;
48 m_lastStartAtts = atts;
49 m_depth++;
50
51 return true;
52 }
53
54 bool XmlStackedHandler::endElement(const QString &namespaceURI, const QString &localName,
55 const QString &qName) {
56 m_depth--;
57
58 if (m_depth == 0 && reader()) {
59 reader()->popContentHandler();
60
61 if (reader()->topContentHandler())
62 reader()->topContentHandler()->endElement(namespaceURI, localName, qName);
63 }
64
65 return true;
66 }
67
68 XmlStackedHandlerReader *XmlStackedHandler::reader() {
69 return m_reader;
70 }
71
72
73 const XmlStackedHandlerReader *XmlStackedHandler::reader() const {
74 return m_reader;
75 }
76
77
78 bool XmlStackedHandler::fatalError(const QXmlParseException &exception) {
79 qDebug() << "Parse error at line " << exception.lineNumber()
80 << ", " << "column " << exception.columnNumber() << ": "
81 << qPrintable(exception.message());
82 return false;
83 }
84
85}
XML Handler that parses XMLs in a stack-oriented way.
void switchToNewHandler(XmlStackedHandler *nextHandler)
Switch to a new content handler and continue processing using the new handler.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16