VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qxml.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Qt Software Information (qt-info@nokia.com)
5 **
6 ** This file is part of the QtXML module of the Qt Toolkit.
7 **
8 ** Commercial Usage
9 ** Licensees holding valid Qt Commercial licenses may use this file in
10 ** accordance with the Qt Commercial License Agreement provided with the
11 ** Software or, alternatively, in accordance with the terms contained in
12 ** a written agreement between you and Nokia.
13 **
14 **
15 ** GNU General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU
17 ** General Public License versions 2.0 or 3.0 as published by the Free
18 ** Software Foundation and appearing in the file LICENSE.GPL included in
19 ** the packaging of this file. Please review the following information
20 ** to ensure GNU General Public Licensing requirements will be met:
21 ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
22 ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
23 ** exception, Nokia gives you certain additional rights. These rights
24 ** are described in the Nokia Qt GPL Exception version 1.3, included in
25 ** the file GPL_EXCEPTION.txt in this package.
26 **
27 ** Qt for Windows(R) Licensees
28 ** As a special exception, Nokia, as the sole copyright holder for Qt
29 ** Designer, grants users of the Qt/Eclipse Integration plug-in the
30 ** right for the Qt/Eclipse Integration to link to functionality
31 ** provided by Qt Designer and its related libraries.
32 **
33 ** If you are unsure which license is appropriate for your use, please
34 ** contact the sales department at qt-sales@nokia.com.
35 **
36 ****************************************************************************/
37 
38 #ifndef QXML_H
39 #define QXML_H
40 
41 #include <QtCore/qtextstream.h>
42 #include <QtCore/qfile.h>
43 #include <QtCore/qstring.h>
44 #include <QtCore/qstringlist.h>
45 #include <QtCore/qlist.h>
46 
47 QT_BEGIN_HEADER
48 
49 QT_BEGIN_NAMESPACE
50 
52 class QXmlAttributes;
53 class QXmlContentHandler;
54 class QXmlDefaultHandler;
55 class QXmlDTDHandler;
56 class QXmlEntityResolver;
57 class QXmlErrorHandler;
58 class QXmlLexicalHandler;
59 class QXmlDeclHandler;
60 class QXmlInputSource;
61 class QXmlLocator;
63 class QXmlParseException;
64 
65 class QXmlReader;
66 class QXmlSimpleReader;
67 
68 class QXmlSimpleReaderPrivate;
69 class QXmlNamespaceSupportPrivate;
70 class QXmlAttributesPrivate;
71 class QXmlInputSourcePrivate;
72 class QXmlParseExceptionPrivate;
73 class QXmlLocatorPrivate;
74 class QXmlDefaultHandlerPrivate;
75 
76 
77 //
78 // SAX Namespace Support
79 //
80 
81 class Q_XML_EXPORT QXmlNamespaceSupport
82 {
83 public:
86 
87  void setPrefix(const QString&, const QString&);
88 
89  QString prefix(const QString&) const;
90  QString uri(const QString&) const;
91  void splitName(const QString&, QString&, QString&) const;
92  void processName(const QString&, bool, QString&, QString&) const;
93  QStringList prefixes() const;
94  QStringList prefixes(const QString&) const;
95 
96  void pushContext();
97  void popContext();
98  void reset();
99 
100 private:
101  QXmlNamespaceSupportPrivate *d;
102 
103  friend class QXmlSimpleReaderPrivate;
104  Q_DISABLE_COPY(QXmlNamespaceSupport)
105 };
106 
107 
108 //
109 // SAX Attributes
110 //
111 
112 class Q_XML_EXPORT QXmlAttributes
113 {
114 public:
116  virtual ~QXmlAttributes() {}
117 
118  int index(const QString& qName) const;
119  int index(const QLatin1String& qName) const;
120  int index(const QString& uri, const QString& localPart) const;
121  int length() const;
122  int count() const;
123  QString localName(int index) const;
124  QString qName(int index) const;
125  QString uri(int index) const;
126  QString type(int index) const;
127  QString type(const QString& qName) const;
128  QString type(const QString& uri, const QString& localName) const;
129  QString value(int index) const;
130  QString value(const QString& qName) const;
131  QString value(const QLatin1String& qName) const;
132  QString value(const QString& uri, const QString& localName) const;
133 
134  void clear();
135  void append(const QString &qName, const QString &uri, const QString &localPart, const QString &value);
136 
137 private:
138  struct Attribute {
139  QString qname, uri, localname, value;
140  };
143 
144  QXmlAttributesPrivate *d;
145 };
146 
147 //
148 // SAX Input Source
149 //
150 
151 class Q_XML_EXPORT QXmlInputSource
152 {
153 public:
154  QXmlInputSource();
155  QXmlInputSource(QIODevice *dev);
156  virtual ~QXmlInputSource();
157 
158  virtual void setData(const QString& dat);
159  virtual void setData(const QByteArray& dat);
160  virtual void fetchData();
161  virtual QString data() const;
162  virtual QChar next();
163  virtual void reset();
164 
165  static const ushort EndOfData;
166  static const ushort EndOfDocument;
167 
168 #ifdef QT3_SUPPORT
169  QT3_SUPPORT_CONSTRUCTOR QXmlInputSource(QFile& file);
170  QT3_SUPPORT_CONSTRUCTOR QXmlInputSource(QTextStream& stream);
171 #endif
172 
173 protected:
174  virtual QString fromRawData(const QByteArray &data, bool beginning = false);
175 
176 private:
177  void init();
178  QXmlInputSourcePrivate *d;
179 };
180 
181 //
182 // SAX Exception Classes
183 //
184 
185 class Q_XML_EXPORT QXmlParseException
186 {
187 public:
188  explicit QXmlParseException(const QString &name = QString(), int c = -1, int l = -1,
189  const QString &p = QString(), const QString &s = QString());
191 
192  int columnNumber() const;
193  int lineNumber() const;
194  QString publicId() const;
195  QString systemId() const;
196  QString message() const;
197 
198 private:
199  QXmlParseExceptionPrivate *d;
200 };
201 
202 
203 //
204 // XML Reader
205 //
206 
207 class Q_XML_EXPORT QXmlReader
208 {
209 public:
210  virtual ~QXmlReader() {}
211  virtual bool feature(const QString& name, bool *ok = 0) const = 0;
212  virtual void setFeature(const QString& name, bool value) = 0;
213  virtual bool hasFeature(const QString& name) const = 0;
214  virtual void* property(const QString& name, bool *ok = 0) const = 0;
215  virtual void setProperty(const QString& name, void* value) = 0;
216  virtual bool hasProperty(const QString& name) const = 0;
217  virtual void setEntityResolver(QXmlEntityResolver* handler) = 0;
218  virtual QXmlEntityResolver* entityResolver() const = 0;
219  virtual void setDTDHandler(QXmlDTDHandler* handler) = 0;
220  virtual QXmlDTDHandler* DTDHandler() const = 0;
221  virtual void setContentHandler(QXmlContentHandler* handler) = 0;
222  virtual QXmlContentHandler* contentHandler() const = 0;
223  virtual void setErrorHandler(QXmlErrorHandler* handler) = 0;
224  virtual QXmlErrorHandler* errorHandler() const = 0;
225  virtual void setLexicalHandler(QXmlLexicalHandler* handler) = 0;
226  virtual QXmlLexicalHandler* lexicalHandler() const = 0;
227  virtual void setDeclHandler(QXmlDeclHandler* handler) = 0;
228  virtual QXmlDeclHandler* declHandler() const = 0;
229  virtual bool parse(const QXmlInputSource& input) = 0;
230  virtual bool parse(const QXmlInputSource* input) = 0;
231 };
232 
233 class Q_XML_EXPORT QXmlSimpleReader : public QXmlReader
234 {
235 public:
237  virtual ~QXmlSimpleReader();
238 
239  bool feature(const QString& name, bool *ok = 0) const;
240  void setFeature(const QString& name, bool value);
241  bool hasFeature(const QString& name) const;
242 
243  void* property(const QString& name, bool *ok = 0) const;
244  void setProperty(const QString& name, void* value);
245  bool hasProperty(const QString& name) const;
246 
247  void setEntityResolver(QXmlEntityResolver* handler);
249  void setDTDHandler(QXmlDTDHandler* handler);
250  QXmlDTDHandler* DTDHandler() const;
251  void setContentHandler(QXmlContentHandler* handler);
253  void setErrorHandler(QXmlErrorHandler* handler);
255  void setLexicalHandler(QXmlLexicalHandler* handler);
257  void setDeclHandler(QXmlDeclHandler* handler);
258  QXmlDeclHandler* declHandler() const;
259 
260  bool parse(const QXmlInputSource& input);
261  bool parse(const QXmlInputSource* input);
262  virtual bool parse(const QXmlInputSource* input, bool incremental);
263  virtual bool parseContinue();
264 
265 private:
266  Q_DISABLE_COPY(QXmlSimpleReader)
267  Q_DECLARE_PRIVATE(QXmlSimpleReader)
268  QXmlSimpleReaderPrivate* d_ptr;
269 
270  friend class QXmlSimpleReaderLocator;
271 };
272 
273 //
274 // SAX Locator
275 //
276 
277 class Q_XML_EXPORT QXmlLocator
278 {
279 public:
280  QXmlLocator();
281  virtual ~QXmlLocator();
282 
283  virtual int columnNumber() const = 0;
284  virtual int lineNumber() const = 0;
285 // QString getPublicId() const
286 // QString getSystemId() const
287 };
288 
289 //
290 // SAX handler classes
291 //
292 
293 class Q_XML_EXPORT QXmlContentHandler
294 {
295 public:
296  virtual ~QXmlContentHandler() {}
297  virtual void setDocumentLocator(QXmlLocator* locator) = 0;
298  virtual bool startDocument() = 0;
299  virtual bool endDocument() = 0;
300  virtual bool startPrefixMapping(const QString& prefix, const QString& uri) = 0;
301  virtual bool endPrefixMapping(const QString& prefix) = 0;
302  virtual bool startElement(const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts) = 0;
303  virtual bool endElement(const QString& namespaceURI, const QString& localName, const QString& qName) = 0;
304  virtual bool characters(const QString& ch) = 0;
305  virtual bool ignorableWhitespace(const QString& ch) = 0;
306  virtual bool processingInstruction(const QString& target, const QString& data) = 0;
307  virtual bool skippedEntity(const QString& name) = 0;
308  virtual QString errorString() const = 0;
309 };
310 
311 class Q_XML_EXPORT QXmlErrorHandler
312 {
313 public:
314  virtual ~QXmlErrorHandler() {}
315  virtual bool warning(const QXmlParseException& exception) = 0;
316  virtual bool error(const QXmlParseException& exception) = 0;
317  virtual bool fatalError(const QXmlParseException& exception) = 0;
318  virtual QString errorString() const = 0;
319 };
320 
321 class Q_XML_EXPORT QXmlDTDHandler
322 {
323 public:
324  virtual ~QXmlDTDHandler() {}
325  virtual bool notationDecl(const QString& name, const QString& publicId, const QString& systemId) = 0;
326  virtual bool unparsedEntityDecl(const QString& name, const QString& publicId, const QString& systemId, const QString& notationName) = 0;
327  virtual QString errorString() const = 0;
328 };
329 
330 class Q_XML_EXPORT QXmlEntityResolver
331 {
332 public:
333  virtual ~QXmlEntityResolver() {}
334  virtual bool resolveEntity(const QString& publicId, const QString& systemId, QXmlInputSource*& ret) = 0;
335  virtual QString errorString() const = 0;
336 };
337 
338 class Q_XML_EXPORT QXmlLexicalHandler
339 {
340 public:
341  virtual ~QXmlLexicalHandler() {}
342  virtual bool startDTD(const QString& name, const QString& publicId, const QString& systemId) = 0;
343  virtual bool endDTD() = 0;
344  virtual bool startEntity(const QString& name) = 0;
345  virtual bool endEntity(const QString& name) = 0;
346  virtual bool startCDATA() = 0;
347  virtual bool endCDATA() = 0;
348  virtual bool comment(const QString& ch) = 0;
349  virtual QString errorString() const = 0;
350 };
351 
352 class Q_XML_EXPORT QXmlDeclHandler
353 {
354 public:
355  virtual ~QXmlDeclHandler() {}
356  virtual bool attributeDecl(const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value) = 0;
357  virtual bool internalEntityDecl(const QString& name, const QString& value) = 0;
358  virtual bool externalEntityDecl(const QString& name, const QString& publicId, const QString& systemId) = 0;
359  virtual QString errorString() const = 0;
360  // ### Qt 5: Conform to SAX by adding elementDecl
361 };
362 
363 
365 {
366 public:
368  virtual ~QXmlDefaultHandler() { }
369 
370  void setDocumentLocator(QXmlLocator* locator);
371  bool startDocument();
372  bool endDocument();
373  bool startPrefixMapping(const QString& prefix, const QString& uri);
374  bool endPrefixMapping(const QString& prefix);
375  bool startElement(const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts);
376  bool endElement(const QString& namespaceURI, const QString& localName, const QString& qName);
377  bool characters(const QString& ch);
378  bool ignorableWhitespace(const QString& ch);
379  bool processingInstruction(const QString& target, const QString& data);
380  bool skippedEntity(const QString& name);
381 
382  bool warning(const QXmlParseException& exception);
383  bool error(const QXmlParseException& exception);
384  bool fatalError(const QXmlParseException& exception);
385 
386  bool notationDecl(const QString& name, const QString& publicId, const QString& systemId);
387  bool unparsedEntityDecl(const QString& name, const QString& publicId, const QString& systemId, const QString& notationName);
388 
389  bool resolveEntity(const QString& publicId, const QString& systemId, QXmlInputSource*& ret);
390 
391  bool startDTD(const QString& name, const QString& publicId, const QString& systemId);
392  bool endDTD();
393  bool startEntity(const QString& name);
394  bool endEntity(const QString& name);
395  bool startCDATA();
396  bool endCDATA();
397  bool comment(const QString& ch);
398 
399  bool attributeDecl(const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value);
400  bool internalEntityDecl(const QString& name, const QString& value);
401  bool externalEntityDecl(const QString& name, const QString& publicId, const QString& systemId);
402 
403  QString errorString() const;
404 
405 private:
406  QXmlDefaultHandlerPrivate *d;
407  Q_DISABLE_COPY(QXmlDefaultHandler)
408 };
409 
410 // inlines
411 
412 inline int QXmlAttributes::count() const
413 { return length(); }
414 
415 QT_END_NAMESPACE
416 
417 QT_END_HEADER
418 
419 #endif // QXML_H

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)