1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtXml module of the Qt Toolkit.
7 **
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 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 Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #ifndef QDOM_H
41 #define QDOM_H
42 
43 #include <QtXml/qtxmlglobal.h>
44 #include <QtCore/qstring.h>
45 
46 QT_BEGIN_NAMESPACE
47 
48 
49 #ifndef QT_NO_DOM
50 
51 class QIODevice;
52 class QTextStream;
53 
54 class QXmlInputSource;
55 class QXmlReader;
56 
57 class QDomDocumentPrivate;
58 class QDomDocumentTypePrivate;
59 class QDomDocumentFragmentPrivate;
60 class QDomNodePrivate;
61 class QDomNodeListPrivate;
62 class QDomImplementationPrivate;
63 class QDomElementPrivate;
64 class QDomNotationPrivate;
65 class QDomEntityPrivate;
66 class QDomEntityReferencePrivate;
67 class QDomProcessingInstructionPrivate;
68 class QDomAttrPrivate;
69 class QDomCharacterDataPrivate;
70 class QDomTextPrivate;
71 class QDomCommentPrivate;
72 class QDomCDATASectionPrivate;
73 class QDomNamedNodeMapPrivate;
74 class QDomImplementationPrivate;
75 
76 class QDomNodeList;
77 class QDomElement;
78 class QDomText;
79 class QDomComment;
80 class QDomCDATASection;
81 class QDomProcessingInstruction;
82 class QDomAttr;
83 class QDomEntityReference;
84 class QDomDocument;
85 class QDomNamedNodeMap;
86 class QDomDocument;
87 class QDomDocumentFragment;
88 class QDomDocumentType;
89 class QDomImplementation;
90 class QDomNode;
91 class QDomEntity;
92 class QDomNotation;
93 class QDomCharacterData;
94 class QXmlStreamReader;
95 
96 class Q_XML_EXPORT QDomImplementation
97 {
98 public:
99     QDomImplementation();
100     QDomImplementation(const QDomImplementation&);
101     ~QDomImplementation();
102     QDomImplementation& operator= (const QDomImplementation&);
103     bool operator== (const QDomImplementation&) const;
104     bool operator!= (const QDomImplementation&) const;
105 
106     // functions
107     bool hasFeature(const QString& feature, const QString& version) const;
108     QDomDocumentType createDocumentType(const QString& qName, const QString& publicId, const QString& systemId);
109     QDomDocument createDocument(const QString& nsURI, const QString& qName, const QDomDocumentType& doctype);
110 
111     enum InvalidDataPolicy { AcceptInvalidChars = 0, DropInvalidChars, ReturnNullNode };
112     static InvalidDataPolicy invalidDataPolicy();
113     static void setInvalidDataPolicy(InvalidDataPolicy policy);
114 
115     // Qt extension
116     bool isNull();
117 
118 private:
119     QDomImplementationPrivate* impl;
120     QDomImplementation(QDomImplementationPrivate*);
121 
122     friend class QDomDocument;
123 };
124 
125 class Q_XML_EXPORT QDomNode
126 {
127 public:
128     enum NodeType {
129         ElementNode               = 1,
130         AttributeNode             = 2,
131         TextNode                  = 3,
132         CDATASectionNode          = 4,
133         EntityReferenceNode       = 5,
134         EntityNode                = 6,
135         ProcessingInstructionNode = 7,
136         CommentNode               = 8,
137         DocumentNode              = 9,
138         DocumentTypeNode          = 10,
139         DocumentFragmentNode      = 11,
140         NotationNode              = 12,
141         BaseNode                  = 21,// this is not in the standard
142         CharacterDataNode         = 22 // this is not in the standard
143     };
144 
145     enum EncodingPolicy
146     {
147         EncodingFromDocument      = 1,
148         EncodingFromTextStream    = 2
149     };
150 
151     QDomNode();
152     QDomNode(const QDomNode&);
153     QDomNode& operator= (const QDomNode&);
154     bool operator== (const QDomNode&) const;
155     bool operator!= (const QDomNode&) const;
156     ~QDomNode();
157 
158     // DOM functions
159     QDomNode insertBefore(const QDomNode& newChild, const QDomNode& refChild);
160     QDomNode insertAfter(const QDomNode& newChild, const QDomNode& refChild);
161     QDomNode replaceChild(const QDomNode& newChild, const QDomNode& oldChild);
162     QDomNode removeChild(const QDomNode& oldChild);
163     QDomNode appendChild(const QDomNode& newChild);
164     bool hasChildNodes() const;
165     QDomNode cloneNode(bool deep = true) const;
166     void normalize();
167     bool isSupported(const QString& feature, const QString& version) const;
168 
169     // DOM read-only attributes
170     QString nodeName() const;
171     NodeType nodeType() const;
172     QDomNode parentNode() const;
173     QDomNodeList childNodes() const;
174     QDomNode firstChild() const;
175     QDomNode lastChild() const;
176     QDomNode previousSibling() const;
177     QDomNode nextSibling() const;
178     QDomNamedNodeMap attributes() const;
179     QDomDocument ownerDocument() const;
180     QString namespaceURI() const;
181     QString localName() const;
182     bool hasAttributes() const;
183 
184     // DOM attributes
185     QString nodeValue() const;
186     void setNodeValue(const QString&);
187     QString prefix() const;
188     void setPrefix(const QString& pre);
189 
190     // Qt extensions
191     bool isAttr() const;
192     bool isCDATASection() const;
193     bool isDocumentFragment() const;
194     bool isDocument() const;
195     bool isDocumentType() const;
196     bool isElement() const;
197     bool isEntityReference() const;
198     bool isText() const;
199     bool isEntity() const;
200     bool isNotation() const;
201     bool isProcessingInstruction() const;
202     bool isCharacterData() const;
203     bool isComment() const;
204 
205     /**
206      * Shortcut to avoid dealing with QDomNodeList
207      * all the time.
208      */
209     QDomNode namedItem(const QString& name) const;
210 
211     bool isNull() const;
212     void clear();
213 
214     QDomAttr toAttr() const;
215     QDomCDATASection toCDATASection() const;
216     QDomDocumentFragment toDocumentFragment() const;
217     QDomDocument toDocument() const;
218     QDomDocumentType toDocumentType() const;
219     QDomElement toElement() const;
220     QDomEntityReference toEntityReference() const;
221     QDomText toText() const;
222     QDomEntity toEntity() const;
223     QDomNotation toNotation() const;
224     QDomProcessingInstruction toProcessingInstruction() const;
225     QDomCharacterData toCharacterData() const;
226     QDomComment toComment() const;
227 
228     void save(QTextStream&, int, EncodingPolicy=QDomNode::EncodingFromDocument) const;
229 
230     QDomElement firstChildElement(const QString &tagName = QString()) const;
231     QDomElement lastChildElement(const QString &tagName = QString()) const;
232     QDomElement previousSiblingElement(const QString &tagName = QString()) const;
233     QDomElement nextSiblingElement(const QString &taName = QString()) const;
234 
235     int lineNumber() const;
236     int columnNumber() const;
237 
238 protected:
239     QDomNodePrivate* impl;
240     QDomNode(QDomNodePrivate*);
241 
242 private:
243     friend class QDomDocument;
244     friend class QDomDocumentType;
245     friend class QDomNodeList;
246     friend class QDomNamedNodeMap;
247 };
248 
249 class Q_XML_EXPORT QDomNodeList
250 {
251 public:
252     QDomNodeList();
253     QDomNodeList(const QDomNodeList&);
254     QDomNodeList& operator= (const QDomNodeList&);
255     bool operator== (const QDomNodeList&) const;
256     bool operator!= (const QDomNodeList&) const;
257     ~QDomNodeList();
258 
259     // DOM functions
260     QDomNode item(int index) const;
at(int index)261     inline QDomNode at(int index) const { return item(index); } // Qt API consistency
262 
263     // DOM read only attributes
264     int length() const;
count()265     inline int count() const { return length(); } // Qt API consitancy
size()266     inline int size() const { return length(); } // Qt API consistency
isEmpty()267     inline bool isEmpty() const { return length() == 0; } // Qt API consistency
268 
269 private:
270     QDomNodeListPrivate* impl;
271     QDomNodeList(QDomNodeListPrivate*);
272 
273     friend class QDomNode;
274     friend class QDomElement;
275     friend class QDomDocument;
276 };
277 
278 class Q_XML_EXPORT QDomDocumentType : public QDomNode
279 {
280 public:
281     QDomDocumentType();
282     QDomDocumentType(const QDomDocumentType& x);
283     QDomDocumentType& operator= (const QDomDocumentType&);
284 
285     // DOM read only attributes
286     QString name() const;
287     QDomNamedNodeMap entities() const;
288     QDomNamedNodeMap notations() const;
289     QString publicId() const;
290     QString systemId() const;
291     QString internalSubset() const;
292 
293     // Overridden from QDomNode
nodeType()294     inline QDomNode::NodeType nodeType() const { return DocumentTypeNode; }
295 
296 private:
297     QDomDocumentType(QDomDocumentTypePrivate*);
298 
299     friend class QDomImplementation;
300     friend class QDomDocument;
301     friend class QDomNode;
302 };
303 
304 class Q_XML_EXPORT QDomDocument : public QDomNode
305 {
306 public:
307     QDomDocument();
308     explicit QDomDocument(const QString& name);
309     explicit QDomDocument(const QDomDocumentType& doctype);
310     QDomDocument(const QDomDocument& x);
311     QDomDocument& operator= (const QDomDocument&);
312     ~QDomDocument();
313 
314     // DOM functions
315     QDomElement createElement(const QString& tagName);
316     QDomDocumentFragment createDocumentFragment();
317     QDomText createTextNode(const QString& data);
318     QDomComment createComment(const QString& data);
319     QDomCDATASection createCDATASection(const QString& data);
320     QDomProcessingInstruction createProcessingInstruction(const QString& target, const QString& data);
321     QDomAttr createAttribute(const QString& name);
322     QDomEntityReference createEntityReference(const QString& name);
323     QDomNodeList elementsByTagName(const QString& tagname) const;
324     QDomNode importNode(const QDomNode& importedNode, bool deep);
325     QDomElement createElementNS(const QString& nsURI, const QString& qName);
326     QDomAttr createAttributeNS(const QString& nsURI, const QString& qName);
327     QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName);
328     QDomElement elementById(const QString& elementId);
329 
330     // DOM read only attributes
331     QDomDocumentType doctype() const;
332     QDomImplementation implementation() const;
333     QDomElement documentElement() const;
334 
335     // Overridden from QDomNode
nodeType()336     inline QDomNode::NodeType nodeType() const { return DocumentNode; }
337 
338     // Qt extensions
339     bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
340     bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
341     bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
342 #if QT_DEPRECATED_SINCE(5, 15)
343 QT_WARNING_PUSH
344 QT_WARNING_DISABLE_DEPRECATED
345     QT_DEPRECATED_X("Use other overloads instead")
346     bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
347 QT_WARNING_POP
348 #endif
349     bool setContent(const QByteArray& text, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
350     bool setContent(const QString& text, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
351     bool setContent(QIODevice* dev, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
352 #if QT_DEPRECATED_SINCE(5, 15)
353 QT_WARNING_PUSH
354 QT_WARNING_DISABLE_DEPRECATED
355     QT_DEPRECATED_X("Use other overloads instead")
356     bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
357 QT_WARNING_POP
358 #endif
359     bool setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg = nullptr,
360                     int *errorLine = nullptr, int *errorColumn = nullptr);
361 
362     // Qt extensions
363     QString toString(int = 1) const;
364     QByteArray toByteArray(int = 1) const;
365 
366 private:
367     QDomDocument(QDomDocumentPrivate*);
368 
369     friend class QDomNode;
370 };
371 
372 class Q_XML_EXPORT QDomNamedNodeMap
373 {
374 public:
375     QDomNamedNodeMap();
376     QDomNamedNodeMap(const QDomNamedNodeMap&);
377     QDomNamedNodeMap& operator= (const QDomNamedNodeMap&);
378     bool operator== (const QDomNamedNodeMap&) const;
379     bool operator!= (const QDomNamedNodeMap&) const;
380     ~QDomNamedNodeMap();
381 
382     // DOM functions
383     QDomNode namedItem(const QString& name) const;
384     QDomNode setNamedItem(const QDomNode& newNode);
385     QDomNode removeNamedItem(const QString& name);
386     QDomNode item(int index) const;
387     QDomNode namedItemNS(const QString& nsURI, const QString& localName) const;
388     QDomNode setNamedItemNS(const QDomNode& newNode);
389     QDomNode removeNamedItemNS(const QString& nsURI, const QString& localName);
390 
391     // DOM read only attributes
392     int length() const;
count()393     int count() const { return length(); } // Qt API consitancy
size()394     inline int size() const { return length(); } // Qt API consistency
isEmpty()395     inline bool isEmpty() const { return length() == 0; } // Qt API consistency
396 
397     // Qt extension
398     bool contains(const QString& name) const;
399 
400 private:
401     QDomNamedNodeMapPrivate* impl;
402     QDomNamedNodeMap(QDomNamedNodeMapPrivate*);
403 
404     friend class QDomNode;
405     friend class QDomDocumentType;
406     friend class QDomElement;
407 };
408 
409 class Q_XML_EXPORT QDomDocumentFragment : public QDomNode
410 {
411 public:
412     QDomDocumentFragment();
413     QDomDocumentFragment(const QDomDocumentFragment& x);
414     QDomDocumentFragment& operator= (const QDomDocumentFragment&);
415 
416     // Overridden from QDomNode
nodeType()417     inline QDomNode::NodeType nodeType() const { return DocumentFragmentNode; }
418 
419 private:
420     QDomDocumentFragment(QDomDocumentFragmentPrivate*);
421 
422     friend class QDomDocument;
423     friend class QDomNode;
424 };
425 
426 class Q_XML_EXPORT QDomCharacterData : public QDomNode
427 {
428 public:
429     QDomCharacterData();
430     QDomCharacterData(const QDomCharacterData& x);
431     QDomCharacterData& operator= (const QDomCharacterData&);
432 
433     // DOM functions
434     QString substringData(unsigned long offset, unsigned long count);
435     void appendData(const QString& arg);
436     void insertData(unsigned long offset, const QString& arg);
437     void deleteData(unsigned long offset, unsigned long count);
438     void replaceData(unsigned long offset, unsigned long count, const QString& arg);
439 
440     // DOM read only attributes
441     int length() const;
442 
443     // DOM attributes
444     QString data() const;
445     void setData(const QString&);
446 
447     // Overridden from QDomNode
448     QDomNode::NodeType nodeType() const;
449 
450 private:
451     QDomCharacterData(QDomCharacterDataPrivate*);
452 
453     friend class QDomDocument;
454     friend class QDomText;
455     friend class QDomComment;
456     friend class QDomNode;
457 };
458 
459 class Q_XML_EXPORT QDomAttr : public QDomNode
460 {
461 public:
462     QDomAttr();
463     QDomAttr(const QDomAttr& x);
464     QDomAttr& operator= (const QDomAttr&);
465 
466     // DOM read only attributes
467     QString name() const;
468     bool specified() const;
469     QDomElement ownerElement() const;
470 
471     // DOM attributes
472     QString value() const;
473     void setValue(const QString&);
474 
475     // Overridden from QDomNode
nodeType()476     inline QDomNode::NodeType nodeType() const { return AttributeNode; }
477 
478 private:
479     QDomAttr(QDomAttrPrivate*);
480 
481     friend class QDomDocument;
482     friend class QDomElement;
483     friend class QDomNode;
484 };
485 
486 class Q_XML_EXPORT QDomElement : public QDomNode
487 {
488 public:
489     QDomElement();
490     QDomElement(const QDomElement& x);
491     QDomElement& operator= (const QDomElement&);
492 
493     // DOM functions
494     QString attribute(const QString& name, const QString& defValue = QString() ) const;
495     void setAttribute(const QString& name, const QString& value);
496     void setAttribute(const QString& name, qlonglong value);
497     void setAttribute(const QString& name, qulonglong value);
setAttribute(const QString & name,int value)498     inline void setAttribute(const QString& name, int value)
499         { setAttribute(name, qlonglong(value)); }
setAttribute(const QString & name,uint value)500     inline void setAttribute(const QString& name, uint value)
501         { setAttribute(name, qulonglong(value)); }
502     void setAttribute(const QString& name, float value);
503     void setAttribute(const QString& name, double value);
504     void removeAttribute(const QString& name);
505     QDomAttr attributeNode(const QString& name);
506     QDomAttr setAttributeNode(const QDomAttr& newAttr);
507     QDomAttr removeAttributeNode(const QDomAttr& oldAttr);
508     QDomNodeList elementsByTagName(const QString& tagname) const;
509     bool hasAttribute(const QString& name) const;
510 
511     QString attributeNS(const QString nsURI, const QString& localName, const QString& defValue = QString()) const;
512     void setAttributeNS(const QString nsURI, const QString& qName, const QString& value);
setAttributeNS(const QString nsURI,const QString & qName,int value)513     inline void setAttributeNS(const QString nsURI, const QString& qName, int value)
514         { setAttributeNS(nsURI, qName, qlonglong(value)); }
setAttributeNS(const QString nsURI,const QString & qName,uint value)515     inline void setAttributeNS(const QString nsURI, const QString& qName, uint value)
516         { setAttributeNS(nsURI, qName, qulonglong(value)); }
517     void setAttributeNS(const QString nsURI, const QString& qName, qlonglong value);
518     void setAttributeNS(const QString nsURI, const QString& qName, qulonglong value);
519     void setAttributeNS(const QString nsURI, const QString& qName, double value);
520     void removeAttributeNS(const QString& nsURI, const QString& localName);
521     QDomAttr attributeNodeNS(const QString& nsURI, const QString& localName);
522     QDomAttr setAttributeNodeNS(const QDomAttr& newAttr);
523     QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName) const;
524     bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
525 
526     // DOM read only attributes
527     QString tagName() const;
528     void setTagName(const QString& name); // Qt extension
529 
530     // Overridden from QDomNode
531     QDomNamedNodeMap attributes() const;
nodeType()532     inline QDomNode::NodeType nodeType() const { return ElementNode; }
533 
534     QString text() const;
535 
536 private:
537     QDomElement(QDomElementPrivate*);
538 
539     friend class QDomDocument;
540     friend class QDomNode;
541     friend class QDomAttr;
542 };
543 
544 class Q_XML_EXPORT QDomText : public QDomCharacterData
545 {
546 public:
547     QDomText();
548     QDomText(const QDomText& x);
549     QDomText& operator= (const QDomText&);
550 
551     // DOM functions
552     QDomText splitText(int offset);
553 
554     // Overridden from QDomCharacterData
nodeType()555     inline QDomNode::NodeType nodeType() const { return TextNode; }
556 
557 private:
558     QDomText(QDomTextPrivate*);
559 
560     friend class QDomCDATASection;
561     friend class QDomDocument;
562     friend class QDomNode;
563 };
564 
565 class Q_XML_EXPORT QDomComment : public QDomCharacterData
566 {
567 public:
568     QDomComment();
569     QDomComment(const QDomComment& x);
570     QDomComment& operator= (const QDomComment&);
571 
572     // Overridden from QDomCharacterData
nodeType()573     inline QDomNode::NodeType nodeType() const { return CommentNode; }
574 
575 private:
576     QDomComment(QDomCommentPrivate*);
577 
578     friend class QDomDocument;
579     friend class QDomNode;
580 };
581 
582 class Q_XML_EXPORT QDomCDATASection : public QDomText
583 {
584 public:
585     QDomCDATASection();
586     QDomCDATASection(const QDomCDATASection& x);
587     QDomCDATASection& operator= (const QDomCDATASection&);
588 
589     // Overridden from QDomText
nodeType()590     inline QDomNode::NodeType nodeType() const { return CDATASectionNode; }
591 
592 private:
593     QDomCDATASection(QDomCDATASectionPrivate*);
594 
595     friend class QDomDocument;
596     friend class QDomNode;
597 };
598 
599 class Q_XML_EXPORT QDomNotation : public QDomNode
600 {
601 public:
602     QDomNotation();
603     QDomNotation(const QDomNotation& x);
604     QDomNotation& operator= (const QDomNotation&);
605 
606     // DOM read only attributes
607     QString publicId() const;
608     QString systemId() const;
609 
610     // Overridden from QDomNode
nodeType()611     inline QDomNode::NodeType nodeType() const { return NotationNode; }
612 
613 private:
614     QDomNotation(QDomNotationPrivate*);
615 
616     friend class QDomDocument;
617     friend class QDomNode;
618 };
619 
620 class Q_XML_EXPORT QDomEntity : public QDomNode
621 {
622 public:
623     QDomEntity();
624     QDomEntity(const QDomEntity& x);
625     QDomEntity& operator= (const QDomEntity&);
626 
627     // DOM read only attributes
628     QString publicId() const;
629     QString systemId() const;
630     QString notationName() const;
631 
632     // Overridden from QDomNode
nodeType()633     inline QDomNode::NodeType nodeType() const { return EntityNode; }
634 
635 private:
636     QDomEntity(QDomEntityPrivate*);
637 
638     friend class QDomNode;
639 };
640 
641 class Q_XML_EXPORT QDomEntityReference : public QDomNode
642 {
643 public:
644     QDomEntityReference();
645     QDomEntityReference(const QDomEntityReference& x);
646     QDomEntityReference& operator= (const QDomEntityReference&);
647 
648     // Overridden from QDomNode
nodeType()649     inline QDomNode::NodeType nodeType() const { return EntityReferenceNode; }
650 
651 private:
652     QDomEntityReference(QDomEntityReferencePrivate*);
653 
654     friend class QDomDocument;
655     friend class QDomNode;
656 };
657 
658 class Q_XML_EXPORT QDomProcessingInstruction : public QDomNode
659 {
660 public:
661     QDomProcessingInstruction();
662     QDomProcessingInstruction(const QDomProcessingInstruction& x);
663     QDomProcessingInstruction& operator= (const QDomProcessingInstruction&);
664 
665     // DOM read only attributes
666     QString target() const;
667 
668     // DOM attributes
669     QString data() const;
670     void setData(const QString& d);
671 
672     // Overridden from QDomNode
nodeType()673     inline QDomNode::NodeType nodeType() const { return ProcessingInstructionNode; }
674 
675 private:
676     QDomProcessingInstruction(QDomProcessingInstructionPrivate*);
677 
678     friend class QDomDocument;
679     friend class QDomNode;
680 };
681 
682 
683 Q_XML_EXPORT QTextStream& operator<<(QTextStream&, const QDomNode&);
684 
685 #endif // QT_NO_DOM
686 
687 QT_END_NAMESPACE
688 
689 #endif // QDOM_H
690