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