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
31QT_BEGIN_NAMESPACE
32
33bool XmlParser::parse()
34{
35 while (!reader.atEnd()) {
36 reader.readNext();
37 if (reader.hasError()) {
38 fatalError(line: reader.lineNumber(), column: reader.columnNumber(), message: reader.errorString());
39 return false;
40 }
41
42 switch (reader.tokenType()) {
43 case QXmlStreamReader::StartElement:
44 if (!startElement(namespaceURI: reader.namespaceUri(), localName: reader.name(), qName: reader.qualifiedName(),
45 atts: reader.attributes())) {
46 return false;
47 }
48 break;
49 case QXmlStreamReader::EndElement:
50 if (!endElement(namespaceURI: reader.namespaceUri(), localName: reader.name(), qName: 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(text: 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
71bool 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
81bool 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
90bool XmlParser::characters(const QStringRef &text)
91{
92 Q_UNUSED(text)
93 return true;
94}
95
96bool 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
104bool XmlParser::endDocument()
105{
106 return true;
107}
108
109QT_END_NAMESPACE
110

source code of qttools/src/linguist/shared/xmlparser.cpp