00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef QDOM_H
00043 #define QDOM_H
00044
00045 #include <QtCore/qstring.h>
00046
00047 QT_BEGIN_HEADER
00048
00049 QT_BEGIN_NAMESPACE
00050
00051 QT_MODULE(Xml)
00052
00053 #ifndef QT_NO_DOM
00054
00055 class QIODevice;
00056 class QTextStream;
00057
00058 class QXmlInputSource;
00059 class QXmlReader;
00060
00061 class QDomDocumentPrivate;
00062 class QDomDocumentTypePrivate;
00063 class QDomDocumentFragmentPrivate;
00064 class QDomNodePrivate;
00065 class QDomNodeListPrivate;
00066 class QDomImplementationPrivate;
00067 class QDomElementPrivate;
00068 class QDomNotationPrivate;
00069 class QDomEntityPrivate;
00070 class QDomEntityReferencePrivate;
00071 class QDomProcessingInstructionPrivate;
00072 class QDomAttrPrivate;
00073 class QDomCharacterDataPrivate;
00074 class QDomTextPrivate;
00075 class QDomCommentPrivate;
00076 class QDomCDATASectionPrivate;
00077 class QDomNamedNodeMapPrivate;
00078 class QDomImplementationPrivate;
00079
00080 class QDomNodeList;
00081 class QDomElement;
00082 class QDomText;
00083 class QDomComment;
00084 class QDomCDATASection;
00085 class QDomProcessingInstruction;
00086 class QDomAttr;
00087 class QDomEntityReference;
00088 class QDomDocument;
00089 class QDomNamedNodeMap;
00090 class QDomDocument;
00091 class QDomDocumentFragment;
00092 class QDomDocumentType;
00093 class QDomImplementation;
00094 class QDomNode;
00095 class QDomEntity;
00096 class QDomNotation;
00097 class QDomCharacterData;
00098
00099 class Q_XML_EXPORT QDomImplementation
00100 {
00101 public:
00102 QDomImplementation();
00103 QDomImplementation(const QDomImplementation&);
00104 ~QDomImplementation();
00105 QDomImplementation& operator= (const QDomImplementation&);
00106 bool operator== (const QDomImplementation&) const;
00107 bool operator!= (const QDomImplementation&) const;
00108
00109
00110 bool hasFeature(const QString& feature, const QString& version) const;
00111 QDomDocumentType createDocumentType(const QString& qName, const QString& publicId, const QString& systemId);
00112 QDomDocument createDocument(const QString& nsURI, const QString& qName, const QDomDocumentType& doctype);
00113
00114 enum InvalidDataPolicy { AcceptInvalidChars = 0, DropInvalidChars, ReturnNullNode };
00115 static InvalidDataPolicy invalidDataPolicy();
00116 static void setInvalidDataPolicy(InvalidDataPolicy policy);
00117
00118
00119 bool isNull();
00120
00121 private:
00122 QDomImplementationPrivate* impl;
00123 QDomImplementation(QDomImplementationPrivate*);
00124
00125 friend class QDomDocument;
00126 };
00127
00128 class Q_XML_EXPORT QDomNode
00129 {
00130 public:
00131 enum NodeType {
00132 ElementNode = 1,
00133 AttributeNode = 2,
00134 TextNode = 3,
00135 CDATASectionNode = 4,
00136 EntityReferenceNode = 5,
00137 EntityNode = 6,
00138 ProcessingInstructionNode = 7,
00139 CommentNode = 8,
00140 DocumentNode = 9,
00141 DocumentTypeNode = 10,
00142 DocumentFragmentNode = 11,
00143 NotationNode = 12,
00144 BaseNode = 21,
00145 CharacterDataNode = 22
00146 };
00147
00148 enum EncodingPolicy
00149 {
00150 EncodingFromDocument = 1,
00151 EncodingFromTextStream = 2
00152 };
00153
00154 QDomNode();
00155 QDomNode(const QDomNode&);
00156 QDomNode& operator= (const QDomNode&);
00157 bool operator== (const QDomNode&) const;
00158 bool operator!= (const QDomNode&) const;
00159 ~QDomNode();
00160
00161
00162 QDomNode insertBefore(const QDomNode& newChild, const QDomNode& refChild);
00163 QDomNode insertAfter(const QDomNode& newChild, const QDomNode& refChild);
00164 QDomNode replaceChild(const QDomNode& newChild, const QDomNode& oldChild);
00165 QDomNode removeChild(const QDomNode& oldChild);
00166 QDomNode appendChild(const QDomNode& newChild);
00167 bool hasChildNodes() const;
00168 QDomNode cloneNode(bool deep = true) const;
00169 void normalize();
00170 bool isSupported(const QString& feature, const QString& version) const;
00171
00172
00173 QString nodeName() const;
00174 NodeType nodeType() const;
00175 QDomNode parentNode() const;
00176 QDomNodeList childNodes() const;
00177 QDomNode firstChild() const;
00178 QDomNode lastChild() const;
00179 QDomNode previousSibling() const;
00180 QDomNode nextSibling() const;
00181 QDomNamedNodeMap attributes() const;
00182 QDomDocument ownerDocument() const;
00183 QString namespaceURI() const;
00184 QString localName() const;
00185 bool hasAttributes() const;
00186
00187
00188 QString nodeValue() const;
00189 void setNodeValue(const QString&);
00190 QString prefix() const;
00191 void setPrefix(const QString& pre);
00192
00193
00194 bool isAttr() const;
00195 bool isCDATASection() const;
00196 bool isDocumentFragment() const;
00197 bool isDocument() const;
00198 bool isDocumentType() const;
00199 bool isElement() const;
00200 bool isEntityReference() const;
00201 bool isText() const;
00202 bool isEntity() const;
00203 bool isNotation() const;
00204 bool isProcessingInstruction() const;
00205 bool isCharacterData() const;
00206 bool isComment() const;
00207
00212 QDomNode namedItem(const QString& name) const;
00213
00214 bool isNull() const;
00215 void clear();
00216
00217 QDomAttr toAttr() const;
00218 QDomCDATASection toCDATASection() const;
00219 QDomDocumentFragment toDocumentFragment() const;
00220 QDomDocument toDocument() const;
00221 QDomDocumentType toDocumentType() const;
00222 QDomElement toElement() const;
00223 QDomEntityReference toEntityReference() const;
00224 QDomText toText() const;
00225 QDomEntity toEntity() const;
00226 QDomNotation toNotation() const;
00227 QDomProcessingInstruction toProcessingInstruction() const;
00228 QDomCharacterData toCharacterData() const;
00229 QDomComment toComment() const;
00230
00231 void save(QTextStream&, int) const;
00232 void save(QTextStream&, int, EncodingPolicy) const;
00233
00234 QDomElement firstChildElement(const QString &tagName = QString()) const;
00235 QDomElement lastChildElement(const QString &tagName = QString()) const;
00236 QDomElement previousSiblingElement(const QString &tagName = QString()) const;
00237 QDomElement nextSiblingElement(const QString &taName = QString()) const;
00238
00239 int lineNumber() const;
00240 int columnNumber() const;
00241
00242 protected:
00243 QDomNodePrivate* impl;
00244 QDomNode(QDomNodePrivate*);
00245
00246 private:
00247 friend class QDomDocument;
00248 friend class QDomDocumentType;
00249 friend class QDomNodeList;
00250 friend class QDomNamedNodeMap;
00251 };
00252
00253 class Q_XML_EXPORT QDomNodeList
00254 {
00255 public:
00256 QDomNodeList();
00257 QDomNodeList(const QDomNodeList&);
00258 QDomNodeList& operator= (const QDomNodeList&);
00259 bool operator== (const QDomNodeList&) const;
00260 bool operator!= (const QDomNodeList&) const;
00261 ~QDomNodeList();
00262
00263
00264 QDomNode item(int index) const;
00265 inline QDomNode at(int index) const { return item(index); }
00266
00267
00268 uint length() const;
00269 inline int count() const { return length(); }
00270 inline int size() const { return length(); }
00271 inline bool isEmpty() const { return length() == 0; }
00272
00273 private:
00274 QDomNodeListPrivate* impl;
00275 QDomNodeList(QDomNodeListPrivate*);
00276
00277 friend class QDomNode;
00278 friend class QDomElement;
00279 friend class QDomDocument;
00280 };
00281
00282 class Q_XML_EXPORT QDomDocumentType : public QDomNode
00283 {
00284 public:
00285 QDomDocumentType();
00286 QDomDocumentType(const QDomDocumentType& x);
00287 QDomDocumentType& operator= (const QDomDocumentType&);
00288
00289
00290 QString name() const;
00291 QDomNamedNodeMap entities() const;
00292 QDomNamedNodeMap notations() const;
00293 QString publicId() const;
00294 QString systemId() const;
00295 QString internalSubset() const;
00296
00297
00298 inline QDomNode::NodeType nodeType() const { return DocumentTypeNode; }
00299
00300 private:
00301 QDomDocumentType(QDomDocumentTypePrivate*);
00302
00303 friend class QDomImplementation;
00304 friend class QDomDocument;
00305 friend class QDomNode;
00306 };
00307
00308 class Q_XML_EXPORT QDomDocument : public QDomNode
00309 {
00310 public:
00311 QDomDocument();
00312 explicit QDomDocument(const QString& name);
00313 explicit QDomDocument(const QDomDocumentType& doctype);
00314 QDomDocument(const QDomDocument& x);
00315 QDomDocument& operator= (const QDomDocument&);
00316 ~QDomDocument();
00317
00318
00319 QDomElement createElement(const QString& tagName);
00320 QDomDocumentFragment createDocumentFragment();
00321 QDomText createTextNode(const QString& data);
00322 QDomComment createComment(const QString& data);
00323 QDomCDATASection createCDATASection(const QString& data);
00324 QDomProcessingInstruction createProcessingInstruction(const QString& target, const QString& data);
00325 QDomAttr createAttribute(const QString& name);
00326 QDomEntityReference createEntityReference(const QString& name);
00327 QDomNodeList elementsByTagName(const QString& tagname) const;
00328 QDomNode importNode(const QDomNode& importedNode, bool deep);
00329 QDomElement createElementNS(const QString& nsURI, const QString& qName);
00330 QDomAttr createAttributeNS(const QString& nsURI, const QString& qName);
00331 QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName);
00332 QDomElement elementById(const QString& elementId);
00333
00334
00335 QDomDocumentType doctype() const;
00336 QDomImplementation implementation() const;
00337 QDomElement documentElement() const;
00338
00339
00340 inline QDomNode::NodeType nodeType() const { return DocumentNode; }
00341
00342
00343 bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00344 bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00345 bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00346 bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00347 bool setContent(const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00348 bool setContent(const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00349 bool setContent(QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00350 bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
00351
00352
00353 QString toString(int = 1) const;
00354 QByteArray toByteArray(int = 1) const;
00355
00356 private:
00357 QDomDocument(QDomDocumentPrivate*);
00358
00359 friend class QDomNode;
00360 };
00361
00362 class Q_XML_EXPORT QDomNamedNodeMap
00363 {
00364 public:
00365 QDomNamedNodeMap();
00366 QDomNamedNodeMap(const QDomNamedNodeMap&);
00367 QDomNamedNodeMap& operator= (const QDomNamedNodeMap&);
00368 bool operator== (const QDomNamedNodeMap&) const;
00369 bool operator!= (const QDomNamedNodeMap&) const;
00370 ~QDomNamedNodeMap();
00371
00372
00373 QDomNode namedItem(const QString& name) const;
00374 QDomNode setNamedItem(const QDomNode& newNode);
00375 QDomNode removeNamedItem(const QString& name);
00376 QDomNode item(int index) const;
00377 QDomNode namedItemNS(const QString& nsURI, const QString& localName) const;
00378 QDomNode setNamedItemNS(const QDomNode& newNode);
00379 QDomNode removeNamedItemNS(const QString& nsURI, const QString& localName);
00380
00381
00382 uint length() const;
00383 int count() const { return length(); }
00384 inline int size() const { return length(); }
00385 inline bool isEmpty() const { return length() == 0; }
00386
00387
00388 bool contains(const QString& name) const;
00389
00390 private:
00391 QDomNamedNodeMapPrivate* impl;
00392 QDomNamedNodeMap(QDomNamedNodeMapPrivate*);
00393
00394 friend class QDomNode;
00395 friend class QDomDocumentType;
00396 friend class QDomElement;
00397 };
00398
00399 class Q_XML_EXPORT QDomDocumentFragment : public QDomNode
00400 {
00401 public:
00402 QDomDocumentFragment();
00403 QDomDocumentFragment(const QDomDocumentFragment& x);
00404 QDomDocumentFragment& operator= (const QDomDocumentFragment&);
00405
00406
00407 inline QDomNode::NodeType nodeType() const { return DocumentFragmentNode; }
00408
00409 private:
00410 QDomDocumentFragment(QDomDocumentFragmentPrivate*);
00411
00412 friend class QDomDocument;
00413 friend class QDomNode;
00414 };
00415
00416 class Q_XML_EXPORT QDomCharacterData : public QDomNode
00417 {
00418 public:
00419 QDomCharacterData();
00420 QDomCharacterData(const QDomCharacterData& x);
00421 QDomCharacterData& operator= (const QDomCharacterData&);
00422
00423
00424 QString substringData(unsigned long offset, unsigned long count);
00425 void appendData(const QString& arg);
00426 void insertData(unsigned long offset, const QString& arg);
00427 void deleteData(unsigned long offset, unsigned long count);
00428 void replaceData(unsigned long offset, unsigned long count, const QString& arg);
00429
00430
00431 uint length() const;
00432
00433
00434 QString data() const;
00435 void setData(const QString&);
00436
00437
00438 QDomNode::NodeType nodeType() const;
00439
00440 private:
00441 QDomCharacterData(QDomCharacterDataPrivate*);
00442
00443 friend class QDomDocument;
00444 friend class QDomText;
00445 friend class QDomComment;
00446 friend class QDomNode;
00447 };
00448
00449 class Q_XML_EXPORT QDomAttr : public QDomNode
00450 {
00451 public:
00452 QDomAttr();
00453 QDomAttr(const QDomAttr& x);
00454 QDomAttr& operator= (const QDomAttr&);
00455
00456
00457 QString name() const;
00458 bool specified() const;
00459 QDomElement ownerElement() const;
00460
00461
00462 QString value() const;
00463 void setValue(const QString&);
00464
00465
00466 inline QDomNode::NodeType nodeType() const { return AttributeNode; }
00467
00468 private:
00469 QDomAttr(QDomAttrPrivate*);
00470
00471 friend class QDomDocument;
00472 friend class QDomElement;
00473 friend class QDomNode;
00474 };
00475
00476 class Q_XML_EXPORT QDomElement : public QDomNode
00477 {
00478 public:
00479 QDomElement();
00480 QDomElement(const QDomElement& x);
00481 QDomElement& operator= (const QDomElement&);
00482
00483
00484 QString attribute(const QString& name, const QString& defValue = QString() ) const;
00485 void setAttribute(const QString& name, const QString& value);
00486 void setAttribute(const QString& name, qlonglong value);
00487 void setAttribute(const QString& name, qulonglong value);
00488 inline void setAttribute(const QString& name, int value)
00489 { setAttribute(name, qlonglong(value)); }
00490 inline void setAttribute(const QString& name, uint value)
00491 { setAttribute(name, qulonglong(value)); }
00492 void setAttribute(const QString& name, float value);
00493 void setAttribute(const QString& name, double value);
00494 void removeAttribute(const QString& name);
00495 QDomAttr attributeNode(const QString& name);
00496 QDomAttr setAttributeNode(const QDomAttr& newAttr);
00497 QDomAttr removeAttributeNode(const QDomAttr& oldAttr);
00498 QDomNodeList elementsByTagName(const QString& tagname) const;
00499 bool hasAttribute(const QString& name) const;
00500
00501 QString attributeNS(const QString nsURI, const QString& localName, const QString& defValue = QString()) const;
00502 void setAttributeNS(const QString nsURI, const QString& qName, const QString& value);
00503 inline void setAttributeNS(const QString nsURI, const QString& qName, int value)
00504 { setAttributeNS(nsURI, qName, qlonglong(value)); }
00505 inline void setAttributeNS(const QString nsURI, const QString& qName, uint value)
00506 { setAttributeNS(nsURI, qName, qulonglong(value)); }
00507 void setAttributeNS(const QString nsURI, const QString& qName, qlonglong value);
00508 void setAttributeNS(const QString nsURI, const QString& qName, qulonglong value);
00509 void setAttributeNS(const QString nsURI, const QString& qName, double value);
00510 void removeAttributeNS(const QString& nsURI, const QString& localName);
00511 QDomAttr attributeNodeNS(const QString& nsURI, const QString& localName);
00512 QDomAttr setAttributeNodeNS(const QDomAttr& newAttr);
00513 QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName) const;
00514 bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
00515
00516
00517 QString tagName() const;
00518 void setTagName(const QString& name);
00519
00520
00521 QDomNamedNodeMap attributes() const;
00522 inline QDomNode::NodeType nodeType() const { return ElementNode; }
00523
00524 QString text() const;
00525
00526 private:
00527 QDomElement(QDomElementPrivate*);
00528
00529 friend class QDomDocument;
00530 friend class QDomNode;
00531 friend class QDomAttr;
00532 };
00533
00534 class Q_XML_EXPORT QDomText : public QDomCharacterData
00535 {
00536 public:
00537 QDomText();
00538 QDomText(const QDomText& x);
00539 QDomText& operator= (const QDomText&);
00540
00541
00542 QDomText splitText(int offset);
00543
00544
00545 inline QDomNode::NodeType nodeType() const { return TextNode; }
00546
00547 private:
00548 QDomText(QDomTextPrivate*);
00549
00550 friend class QDomCDATASection;
00551 friend class QDomDocument;
00552 friend class QDomNode;
00553 };
00554
00555 class Q_XML_EXPORT QDomComment : public QDomCharacterData
00556 {
00557 public:
00558 QDomComment();
00559 QDomComment(const QDomComment& x);
00560 QDomComment& operator= (const QDomComment&);
00561
00562
00563 inline QDomNode::NodeType nodeType() const { return CommentNode; }
00564
00565 private:
00566 QDomComment(QDomCommentPrivate*);
00567
00568 friend class QDomDocument;
00569 friend class QDomNode;
00570 };
00571
00572 class Q_XML_EXPORT QDomCDATASection : public QDomText
00573 {
00574 public:
00575 QDomCDATASection();
00576 QDomCDATASection(const QDomCDATASection& x);
00577 QDomCDATASection& operator= (const QDomCDATASection&);
00578
00579
00580 inline QDomNode::NodeType nodeType() const { return CDATASectionNode; }
00581
00582 private:
00583 QDomCDATASection(QDomCDATASectionPrivate*);
00584
00585 friend class QDomDocument;
00586 friend class QDomNode;
00587 };
00588
00589 class Q_XML_EXPORT QDomNotation : public QDomNode
00590 {
00591 public:
00592 QDomNotation();
00593 QDomNotation(const QDomNotation& x);
00594 QDomNotation& operator= (const QDomNotation&);
00595
00596
00597 QString publicId() const;
00598 QString systemId() const;
00599
00600
00601 inline QDomNode::NodeType nodeType() const { return NotationNode; }
00602
00603 private:
00604 QDomNotation(QDomNotationPrivate*);
00605
00606 friend class QDomDocument;
00607 friend class QDomNode;
00608 };
00609
00610 class Q_XML_EXPORT QDomEntity : public QDomNode
00611 {
00612 public:
00613 QDomEntity();
00614 QDomEntity(const QDomEntity& x);
00615 QDomEntity& operator= (const QDomEntity&);
00616
00617
00618 QString publicId() const;
00619 QString systemId() const;
00620 QString notationName() const;
00621
00622
00623 inline QDomNode::NodeType nodeType() const { return EntityNode; }
00624
00625 private:
00626 QDomEntity(QDomEntityPrivate*);
00627
00628 friend class QDomNode;
00629 };
00630
00631 class Q_XML_EXPORT QDomEntityReference : public QDomNode
00632 {
00633 public:
00634 QDomEntityReference();
00635 QDomEntityReference(const QDomEntityReference& x);
00636 QDomEntityReference& operator= (const QDomEntityReference&);
00637
00638
00639 inline QDomNode::NodeType nodeType() const { return EntityReferenceNode; }
00640
00641 private:
00642 QDomEntityReference(QDomEntityReferencePrivate*);
00643
00644 friend class QDomDocument;
00645 friend class QDomNode;
00646 };
00647
00648 class Q_XML_EXPORT QDomProcessingInstruction : public QDomNode
00649 {
00650 public:
00651 QDomProcessingInstruction();
00652 QDomProcessingInstruction(const QDomProcessingInstruction& x);
00653 QDomProcessingInstruction& operator= (const QDomProcessingInstruction&);
00654
00655
00656 QString target() const;
00657
00658
00659 QString data() const;
00660 void setData(const QString& d);
00661
00662
00663 inline QDomNode::NodeType nodeType() const { return ProcessingInstructionNode; }
00664
00665 private:
00666 QDomProcessingInstruction(QDomProcessingInstructionPrivate*);
00667
00668 friend class QDomDocument;
00669 friend class QDomNode;
00670 };
00671
00672
00673 Q_XML_EXPORT QTextStream& operator<<(QTextStream&, const QDomNode&);
00674
00675 #endif // QT_NO_DOM
00676
00677 QT_END_NAMESPACE
00678
00679 QT_END_HEADER
00680
00681 #endif // QDOM_H