1
/****************************************************************************
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
6
** This file is part of the QtXml module of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
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 Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
40
****************************************************************************/
45
#include <QtXml/qtxmlglobal.h>
46
#include <QtCore/qstring.h>
58
class QXmlInputSource;
61
class QDomDocumentPrivate;
62
class QDomDocumentTypePrivate;
63
class QDomDocumentFragmentPrivate;
64
class QDomNodePrivate;
65
class QDomNodeListPrivate;
66
class QDomImplementationPrivate;
67
class QDomElementPrivate;
68
class QDomNotationPrivate;
69
class QDomEntityPrivate;
70
class QDomEntityReferencePrivate;
71
class QDomProcessingInstructionPrivate;
72
class QDomAttrPrivate;
73
class QDomCharacterDataPrivate;
74
class QDomTextPrivate;
75
class QDomCommentPrivate;
76
class QDomCDATASectionPrivate;
77
class QDomNamedNodeMapPrivate;
78
class QDomImplementationPrivate;
84
class QDomCDATASection;
85
class QDomProcessingInstruction;
87
class QDomEntityReference;
89
class QDomNamedNodeMap;
91
class QDomDocumentFragment;
92
class QDomDocumentType;
93
class QDomImplementation;
97
class QDomCharacterData;
99
class Q_XML_EXPORT QDomImplementation
102
QDomImplementation();
103
QDomImplementation(const QDomImplementation&);
104
~QDomImplementation();
105
QDomImplementation& operator= (const QDomImplementation&);
106
bool operator== (const QDomImplementation&) const;
107
bool operator!= (const QDomImplementation&) const;
110
bool hasFeature(const QString& feature, const QString& version) const;
111
QDomDocumentType createDocumentType(const QString& qName, const QString& publicId, const QString& systemId);
112
QDomDocument createDocument(const QString& nsURI, const QString& qName, const QDomDocumentType& doctype);
114
enum InvalidDataPolicy { AcceptInvalidChars = 0, DropInvalidChars, ReturnNullNode };
115
static InvalidDataPolicy invalidDataPolicy();
116
static void setInvalidDataPolicy(InvalidDataPolicy policy);
122
QDomImplementationPrivate* impl;
123
QDomImplementation(QDomImplementationPrivate*);
125
friend class QDomDocument;
128
class Q_XML_EXPORT QDomNode
135
CDATASectionNode = 4,
136
EntityReferenceNode = 5,
138
ProcessingInstructionNode = 7,
141
DocumentTypeNode = 10,
142
DocumentFragmentNode = 11,
144
BaseNode = 21,// this is not in the standard
145
CharacterDataNode = 22 // this is not in the standard
150
EncodingFromDocument = 1,
151
EncodingFromTextStream = 2
155
QDomNode(const QDomNode&);
156
QDomNode& operator= (const QDomNode&);
157
bool operator== (const QDomNode&) const;
158
bool operator!= (const QDomNode&) const;
162
QDomNode insertBefore(const QDomNode& newChild, const QDomNode& refChild);
163
QDomNode insertAfter(const QDomNode& newChild, const QDomNode& refChild);
164
QDomNode replaceChild(const QDomNode& newChild, const QDomNode& oldChild);
165
QDomNode removeChild(const QDomNode& oldChild);
166
QDomNode appendChild(const QDomNode& newChild);
167
bool hasChildNodes() const;
168
QDomNode cloneNode(bool deep = true) const;
170
bool isSupported(const QString& feature, const QString& version) const;
172
// DOM read-only attributes
173
QString nodeName() const;
174
NodeType nodeType() const;
175
QDomNode parentNode() const;
176
QDomNodeList childNodes() const;
177
QDomNode firstChild() const;
178
QDomNode lastChild() const;
179
QDomNode previousSibling() const;
180
QDomNode nextSibling() const;
181
QDomNamedNodeMap attributes() const;
182
QDomDocument ownerDocument() const;
183
QString namespaceURI() const;
184
QString localName() const;
185
bool hasAttributes() const;
188
QString nodeValue() const;
189
void setNodeValue(const QString&);
190
QString prefix() const;
191
void setPrefix(const QString& pre);
195
bool isCDATASection() const;
196
bool isDocumentFragment() const;
197
bool isDocument() const;
198
bool isDocumentType() const;
199
bool isElement() const;
200
bool isEntityReference() const;
202
bool isEntity() const;
203
bool isNotation() const;
204
bool isProcessingInstruction() const;
205
bool isCharacterData() const;
206
bool isComment() const;
209
* Shortcut to avoid dealing with QDomNodeList
212
QDomNode namedItem(const QString& name) const;
217
QDomAttr toAttr() const;
218
QDomCDATASection toCDATASection() const;
219
QDomDocumentFragment toDocumentFragment() const;
220
QDomDocument toDocument() const;
221
QDomDocumentType toDocumentType() const;
222
QDomElement toElement() const;
223
QDomEntityReference toEntityReference() const;
224
QDomText toText() const;
225
QDomEntity toEntity() const;
226
QDomNotation toNotation() const;
227
QDomProcessingInstruction toProcessingInstruction() const;
228
QDomCharacterData toCharacterData() const;
229
QDomComment toComment() const;
231
void save(QTextStream&, int, EncodingPolicy=QDomNode::EncodingFromDocument) const;
233
QDomElement firstChildElement(const QString &tagName = QString()) const;
234
QDomElement lastChildElement(const QString &tagName = QString()) const;
235
QDomElement previousSiblingElement(const QString &tagName = QString()) const;
236
QDomElement nextSiblingElement(const QString &taName = QString()) const;
238
int lineNumber() const;
239
int columnNumber() const;
242
QDomNodePrivate* impl;
243
QDomNode(QDomNodePrivate*);
246
friend class QDomDocument;
247
friend class QDomDocumentType;
248
friend class QDomNodeList;
249
friend class QDomNamedNodeMap;
252
class Q_XML_EXPORT QDomNodeList
256
QDomNodeList(const QDomNodeList&);
257
QDomNodeList& operator= (const QDomNodeList&);
258
bool operator== (const QDomNodeList&) const;
259
bool operator!= (const QDomNodeList&) const;
263
QDomNode item(int index) const;
264
inline QDomNode at(int index) const { return item(index); } // Qt API consistency
266
// DOM read only attributes
268
inline int count() const { return length(); } // Qt API consitancy
269
inline int size() const { return length(); } // Qt API consistency
270
inline bool isEmpty() const { return length() == 0; } // Qt API consistency
273
QDomNodeListPrivate* impl;
274
QDomNodeList(QDomNodeListPrivate*);
276
friend class QDomNode;
277
friend class QDomElement;
278
friend class QDomDocument;
281
class Q_XML_EXPORT QDomDocumentType : public QDomNode
285
QDomDocumentType(const QDomDocumentType& x);
286
QDomDocumentType& operator= (const QDomDocumentType&);
288
// DOM read only attributes
289
QString name() const;
290
QDomNamedNodeMap entities() const;
291
QDomNamedNodeMap notations() const;
292
QString publicId() const;
293
QString systemId() const;
294
QString internalSubset() const;
296
// Overridden from QDomNode
297
inline QDomNode::NodeType nodeType() const { return DocumentTypeNode; }
300
QDomDocumentType(QDomDocumentTypePrivate*);
302
friend class QDomImplementation;
303
friend class QDomDocument;
304
friend class QDomNode;
307
class Q_XML_EXPORT QDomDocument : public QDomNode
311
explicit QDomDocument(const QString& name);
312
explicit QDomDocument(const QDomDocumentType& doctype);
313
QDomDocument(const QDomDocument& x);
314
QDomDocument& operator= (const QDomDocument&);
318
QDomElement createElement(const QString& tagName);
319
QDomDocumentFragment createDocumentFragment();
320
QDomText createTextNode(const QString& data);
321
QDomComment createComment(const QString& data);
322
QDomCDATASection createCDATASection(const QString& data);
323
QDomProcessingInstruction createProcessingInstruction(const QString& target, const QString& data);
324
QDomAttr createAttribute(const QString& name);
325
QDomEntityReference createEntityReference(const QString& name);
326
QDomNodeList elementsByTagName(const QString& tagname) const;
327
QDomNode importNode(const QDomNode& importedNode, bool deep);
328
QDomElement createElementNS(const QString& nsURI, const QString& qName);
329
QDomAttr createAttributeNS(const QString& nsURI, const QString& qName);
330
QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName);
331
QDomElement elementById(const QString& elementId);
333
// DOM read only attributes
334
QDomDocumentType doctype() const;
335
QDomImplementation implementation() const;
336
QDomElement documentElement() const;
338
// Overridden from QDomNode
339
inline QDomNode::NodeType nodeType() const { return DocumentNode; }
342
bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
343
bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
344
bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
345
bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
346
bool setContent(const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
347
bool setContent(const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
348
bool setContent(QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
349
bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
352
QString toString(int = 1) const;
353
QByteArray toByteArray(int = 1) const;
356
QDomDocument(QDomDocumentPrivate*);
358
friend class QDomNode;
361
class Q_XML_EXPORT QDomNamedNodeMap
365
QDomNamedNodeMap(const QDomNamedNodeMap&);
366
QDomNamedNodeMap& operator= (const QDomNamedNodeMap&);
367
bool operator== (const QDomNamedNodeMap&) const;
368
bool operator!= (const QDomNamedNodeMap&) const;
372
QDomNode namedItem(const QString& name) const;
373
QDomNode setNamedItem(const QDomNode& newNode);
374
QDomNode removeNamedItem(const QString& name);
375
QDomNode item(int index) const;
376
QDomNode namedItemNS(const QString& nsURI, const QString& localName) const;
377
QDomNode setNamedItemNS(const QDomNode& newNode);
378
QDomNode removeNamedItemNS(const QString& nsURI, const QString& localName);
380
// DOM read only attributes
382
int count() const { return length(); } // Qt API consitancy
383
inline int size() const { return length(); } // Qt API consistency
384
inline bool isEmpty() const { return length() == 0; } // Qt API consistency
387
bool contains(const QString& name) const;
390
QDomNamedNodeMapPrivate* impl;
391
QDomNamedNodeMap(QDomNamedNodeMapPrivate*);
393
friend class QDomNode;
394
friend class QDomDocumentType;
395
friend class QDomElement;
398
class Q_XML_EXPORT QDomDocumentFragment : public QDomNode
401
QDomDocumentFragment();
402
QDomDocumentFragment(const QDomDocumentFragment& x);
403
QDomDocumentFragment& operator= (const QDomDocumentFragment&);
405
// Overridden from QDomNode
406
inline QDomNode::NodeType nodeType() const { return DocumentFragmentNode; }
409
QDomDocumentFragment(QDomDocumentFragmentPrivate*);
411
friend class QDomDocument;
412
friend class QDomNode;
415
class Q_XML_EXPORT QDomCharacterData : public QDomNode
419
QDomCharacterData(const QDomCharacterData& x);
420
QDomCharacterData& operator= (const QDomCharacterData&);
423
QString substringData(unsigned long offset, unsigned long count);
424
void appendData(const QString& arg);
425
void insertData(unsigned long offset, const QString& arg);
426
void deleteData(unsigned long offset, unsigned long count);
427
void replaceData(unsigned long offset, unsigned long count, const QString& arg);
429
// DOM read only attributes
433
QString data() const;
434
void setData(const QString&);
436
// Overridden from QDomNode
437
QDomNode::NodeType nodeType() const;
440
QDomCharacterData(QDomCharacterDataPrivate*);
442
friend class QDomDocument;
443
friend class QDomText;
444
friend class QDomComment;
445
friend class QDomNode;
448
class Q_XML_EXPORT QDomAttr : public QDomNode
452
QDomAttr(const QDomAttr& x);
453
QDomAttr& operator= (const QDomAttr&);
455
// DOM read only attributes
456
QString name() const;
457
bool specified() const;
458
QDomElement ownerElement() const;
461
QString value() const;
462
void setValue(const QString&);
464
// Overridden from QDomNode
465
inline QDomNode::NodeType nodeType() const { return AttributeNode; }
468
QDomAttr(QDomAttrPrivate*);
470
friend class QDomDocument;
471
friend class QDomElement;
472
friend class QDomNode;
475
class Q_XML_EXPORT QDomElement : public QDomNode
479
QDomElement(const QDomElement& x);
480
QDomElement& operator= (const QDomElement&);
483
QString attribute(const QString& name, const QString& defValue = QString() ) const;
484
void setAttribute(const QString& name, const QString& value);
485
void setAttribute(const QString& name, qlonglong value);
486
void setAttribute(const QString& name, qulonglong value);
487
inline void setAttribute(const QString& name, int value)
488
{ setAttribute(name, qlonglong(value)); }
489
inline void setAttribute(const QString& name, uint value)
490
{ setAttribute(name, qulonglong(value)); }
491
void setAttribute(const QString& name, float value);
492
void setAttribute(const QString& name, double value);
493
void removeAttribute(const QString& name);
494
QDomAttr attributeNode(const QString& name);
495
QDomAttr setAttributeNode(const QDomAttr& newAttr);
496
QDomAttr removeAttributeNode(const QDomAttr& oldAttr);
497
QDomNodeList elementsByTagName(const QString& tagname) const;
498
bool hasAttribute(const QString& name) const;
500
QString attributeNS(const QString nsURI, const QString& localName, const QString& defValue = QString()) const;
501
void setAttributeNS(const QString nsURI, const QString& qName, const QString& value);
502
inline void setAttributeNS(const QString nsURI, const QString& qName, int value)
503
{ setAttributeNS(nsURI, qName, qlonglong(value)); }
504
inline void setAttributeNS(const QString nsURI, const QString& qName, uint value)
505
{ setAttributeNS(nsURI, qName, qulonglong(value)); }
506
void setAttributeNS(const QString nsURI, const QString& qName, qlonglong value);
507
void setAttributeNS(const QString nsURI, const QString& qName, qulonglong value);
508
void setAttributeNS(const QString nsURI, const QString& qName, double value);
509
void removeAttributeNS(const QString& nsURI, const QString& localName);
510
QDomAttr attributeNodeNS(const QString& nsURI, const QString& localName);
511
QDomAttr setAttributeNodeNS(const QDomAttr& newAttr);
512
QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName) const;
513
bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
515
// DOM read only attributes
516
QString tagName() const;
517
void setTagName(const QString& name); // Qt extension
519
// Overridden from QDomNode
520
QDomNamedNodeMap attributes() const;
521
inline QDomNode::NodeType nodeType() const { return ElementNode; }
523
QString text() const;
526
QDomElement(QDomElementPrivate*);
528
friend class QDomDocument;
529
friend class QDomNode;
530
friend class QDomAttr;
533
class Q_XML_EXPORT QDomText : public QDomCharacterData
537
QDomText(const QDomText& x);
538
QDomText& operator= (const QDomText&);
541
QDomText splitText(int offset);
543
// Overridden from QDomCharacterData
544
inline QDomNode::NodeType nodeType() const { return TextNode; }
547
QDomText(QDomTextPrivate*);
549
friend class QDomCDATASection;
550
friend class QDomDocument;
551
friend class QDomNode;
554
class Q_XML_EXPORT QDomComment : public QDomCharacterData
558
QDomComment(const QDomComment& x);
559
QDomComment& operator= (const QDomComment&);
561
// Overridden from QDomCharacterData
562
inline QDomNode::NodeType nodeType() const { return CommentNode; }
565
QDomComment(QDomCommentPrivate*);
567
friend class QDomDocument;
568
friend class QDomNode;
571
class Q_XML_EXPORT QDomCDATASection : public QDomText
575
QDomCDATASection(const QDomCDATASection& x);
576
QDomCDATASection& operator= (const QDomCDATASection&);
578
// Overridden from QDomText
579
inline QDomNode::NodeType nodeType() const { return CDATASectionNode; }
582
QDomCDATASection(QDomCDATASectionPrivate*);
584
friend class QDomDocument;
585
friend class QDomNode;
588
class Q_XML_EXPORT QDomNotation : public QDomNode
592
QDomNotation(const QDomNotation& x);
593
QDomNotation& operator= (const QDomNotation&);
595
// DOM read only attributes
596
QString publicId() const;
597
QString systemId() const;
599
// Overridden from QDomNode
600
inline QDomNode::NodeType nodeType() const { return NotationNode; }
603
QDomNotation(QDomNotationPrivate*);
605
friend class QDomDocument;
606
friend class QDomNode;
609
class Q_XML_EXPORT QDomEntity : public QDomNode
613
QDomEntity(const QDomEntity& x);
614
QDomEntity& operator= (const QDomEntity&);
616
// DOM read only attributes
617
QString publicId() const;
618
QString systemId() const;
619
QString notationName() const;
621
// Overridden from QDomNode
622
inline QDomNode::NodeType nodeType() const { return EntityNode; }
625
QDomEntity(QDomEntityPrivate*);
627
friend class QDomNode;
630
class Q_XML_EXPORT QDomEntityReference : public QDomNode
633
QDomEntityReference();
634
QDomEntityReference(const QDomEntityReference& x);
635
QDomEntityReference& operator= (const QDomEntityReference&);
637
// Overridden from QDomNode
638
inline QDomNode::NodeType nodeType() const { return EntityReferenceNode; }
641
QDomEntityReference(QDomEntityReferencePrivate*);
643
friend class QDomDocument;
644
friend class QDomNode;
647
class Q_XML_EXPORT QDomProcessingInstruction : public QDomNode
650
QDomProcessingInstruction();
651
QDomProcessingInstruction(const QDomProcessingInstruction& x);
652
QDomProcessingInstruction& operator= (const QDomProcessingInstruction&);
654
// DOM read only attributes
655
QString target() const;
658
QString data() const;
659
void setData(const QString& d);
661
// Overridden from QDomNode
662
inline QDomNode::NodeType nodeType() const { return ProcessingInstructionNode; }
665
QDomProcessingInstruction(QDomProcessingInstructionPrivate*);
667
friend class QDomDocument;
668
friend class QDomNode;
672
Q_XML_EXPORT QTextStream& operator<<(QTextStream&, const QDomNode&);