7#include "XmlStackedHandler.h"
11#include <QXmlParseException>
13#include "XmlStackedHandlerReader.h"
16 XmlStackedHandler::XmlStackedHandler() {
22 XmlStackedHandler::~XmlStackedHandler() {
28 void XmlStackedHandler::setReader(XmlStackedHandlerReader *reader) {
38 nextHandler->startElement(m_lastStartNamespaceURI, m_lastStartLocalName,
39 m_lastStartQName, m_lastStartAtts);
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;
54 bool XmlStackedHandler::endElement(
const QString &namespaceURI,
const QString &localName,
55 const QString &qName) {
58 if (m_depth == 0 && reader()) {
59 reader()->popContentHandler();
61 if (reader()->topContentHandler())
62 reader()->topContentHandler()->endElement(namespaceURI, localName, qName);
68 XmlStackedHandlerReader *XmlStackedHandler::reader() {
73 const XmlStackedHandlerReader *XmlStackedHandler::reader()
const {
78 bool XmlStackedHandler::fatalError(
const QXmlParseException &exception) {
79 qDebug() <<
"Parse error at line " << exception.lineNumber()
80 <<
", " <<
"column " << exception.columnNumber() <<
": "
81 << qPrintable(exception.message());
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.