1 /****************************************************************************
2 **
3 ** Copyright (C) 2019 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the Qt Linguist of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #include "xmlparser.h"
30 
31 QT_BEGIN_NAMESPACE
32 
parse()33 bool XmlParser::parse()
34 {
35     while (!reader.atEnd()) {
36         reader.readNext();
37         if (reader.hasError()) {
38             fatalError(reader.lineNumber(), reader.columnNumber(), reader.errorString());
39             return false;
40         }
41 
42         switch (reader.tokenType()) {
43         case QXmlStreamReader::StartElement:
44             if (!startElement(reader.namespaceUri(), reader.name(), reader.qualifiedName(),
45                               reader.attributes())) {
46                 return false;
47             }
48             break;
49         case QXmlStreamReader::EndElement:
50             if (!endElement(reader.namespaceUri(), reader.name(), reader.qualifiedName())) {
51                 return false;
52             }
53             break;
54         case QXmlStreamReader::Characters:
55             if (reportWhitespaceOnlyData
56                 || (!reader.isWhitespace() && !reader.text().toString().trimmed().isEmpty())) {
57                 if (!characters(reader.text()))
58                     return false;
59             }
60             break;
61         default:
62             break;
63         }
64     }
65     if (reader.isEndDocument() && !endDocument())
66         return false;
67 
68     return true;
69 }
70 
startElement(const QStringRef & namespaceURI,const QStringRef & localName,const QStringRef & qName,const QXmlStreamAttributes & atts)71 bool XmlParser::startElement(const QStringRef &namespaceURI, const QStringRef &localName,
72                              const QStringRef &qName, const QXmlStreamAttributes &atts)
73 {
74     Q_UNUSED(namespaceURI)
75     Q_UNUSED(localName)
76     Q_UNUSED(qName)
77     Q_UNUSED(atts)
78     return true;
79 }
80 
endElement(const QStringRef & namespaceURI,const QStringRef & localName,const QStringRef & qName)81 bool XmlParser::endElement(const QStringRef &namespaceURI, const QStringRef &localName,
82                            const QStringRef &qName)
83 {
84     Q_UNUSED(namespaceURI)
85     Q_UNUSED(localName)
86     Q_UNUSED(qName)
87     return true;
88 }
89 
characters(const QStringRef & text)90 bool XmlParser::characters(const QStringRef &text)
91 {
92     Q_UNUSED(text)
93     return true;
94 }
95 
fatalError(qint64 line,qint64 column,const QString & message)96 bool XmlParser::fatalError(qint64 line, qint64 column, const QString &message)
97 {
98     Q_UNUSED(line)
99     Q_UNUSED(column)
100     Q_UNUSED(message)
101     return true;
102 }
103 
endDocument()104 bool XmlParser::endDocument()
105 {
106     return true;
107 }
108 
109 QT_END_NAMESPACE
110