source: psi/trunk/src/tools/qxml/qdom.h

Last change on this file was 2, checked in by dmik, 19 years ago

Imported original Psi 0.10 sources from Affinix

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