Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/QtXml/qdom.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 
0004 #ifndef QDOM_H
0005 #define QDOM_H
0006 
0007 #include <QtXml/qtxmlglobal.h>
0008 
0009 #include <QtCore/qcompare.h>
0010 #include <QtCore/qcontainertools_impl.h>
0011 #include <QtCore/qstring.h>
0012 
0013 #include <iterator>
0014 
0015 #if QT_CONFIG(dom)
0016 
0017 class tst_QDom;
0018 
0019 QT_BEGIN_NAMESPACE
0020 
0021 class QIODevice;
0022 class QTextStream;
0023 
0024 class QDomDocumentPrivate;
0025 class QDomDocumentTypePrivate;
0026 class QDomDocumentFragmentPrivate;
0027 class QDomNodePrivate;
0028 class QDomNodeListPrivate;
0029 class QDomImplementationPrivate;
0030 class QDomElementPrivate;
0031 class QDomNotationPrivate;
0032 class QDomEntityPrivate;
0033 class QDomEntityReferencePrivate;
0034 class QDomProcessingInstructionPrivate;
0035 class QDomAttrPrivate;
0036 class QDomCharacterDataPrivate;
0037 class QDomTextPrivate;
0038 class QDomCommentPrivate;
0039 class QDomCDATASectionPrivate;
0040 class QDomNamedNodeMapPrivate;
0041 class QDomImplementationPrivate;
0042 
0043 class QDomNodeList;
0044 class QDomElement;
0045 class QDomText;
0046 class QDomComment;
0047 class QDomCDATASection;
0048 class QDomProcessingInstruction;
0049 class QDomAttr;
0050 class QDomEntityReference;
0051 class QDomDocument;
0052 class QDomNamedNodeMap;
0053 class QDomDocument;
0054 class QDomDocumentFragment;
0055 class QDomDocumentType;
0056 class QDomImplementation;
0057 class QDomNode;
0058 class QDomEntity;
0059 class QDomNotation;
0060 class QDomCharacterData;
0061 class QXmlStreamReader;
0062 
0063 class Q_XML_EXPORT QDomImplementation
0064 {
0065 public:
0066     QDomImplementation();
0067     QDomImplementation(const QDomImplementation &implementation);
0068     ~QDomImplementation();
0069     QDomImplementation& operator=(const QDomImplementation &other);
0070     bool operator==(const QDomImplementation &other) const;
0071     bool operator!=(const QDomImplementation &other) const;
0072 
0073     // functions
0074     bool hasFeature(const QString& feature, const QString& version) const;
0075     QDomDocumentType createDocumentType(const QString& qName, const QString& publicId, const QString& systemId);
0076     QDomDocument createDocument(const QString& nsURI, const QString& qName, const QDomDocumentType& doctype);
0077 
0078     enum InvalidDataPolicy { AcceptInvalidChars = 0, DropInvalidChars, ReturnNullNode };
0079     static InvalidDataPolicy invalidDataPolicy();
0080     static void setInvalidDataPolicy(InvalidDataPolicy policy);
0081 
0082     // Qt extension
0083     bool isNull();
0084 
0085 private:
0086     QDomImplementationPrivate* impl;
0087     QDomImplementation(QDomImplementationPrivate*);
0088 
0089     friend class QDomDocument;
0090 };
0091 
0092 class Q_XML_EXPORT QDomNode
0093 {
0094 public:
0095     enum NodeType {
0096         ElementNode               = 1,
0097         AttributeNode             = 2,
0098         TextNode                  = 3,
0099         CDATASectionNode          = 4,
0100         EntityReferenceNode       = 5,
0101         EntityNode                = 6,
0102         ProcessingInstructionNode = 7,
0103         CommentNode               = 8,
0104         DocumentNode              = 9,
0105         DocumentTypeNode          = 10,
0106         DocumentFragmentNode      = 11,
0107         NotationNode              = 12,
0108         BaseNode                  = 21,// this is not in the standard
0109         CharacterDataNode         = 22 // this is not in the standard
0110     };
0111 
0112     enum EncodingPolicy
0113     {
0114         EncodingFromDocument      = 1,
0115         EncodingFromTextStream    = 2
0116     };
0117 
0118     QDomNode();
0119     QDomNode(const QDomNode &node);
0120     QDomNode& operator=(const QDomNode &other);
0121     bool operator==(const QDomNode &other) const;
0122     bool operator!=(const QDomNode &other) const;
0123     ~QDomNode();
0124 
0125     // DOM functions
0126     QDomNode insertBefore(const QDomNode& newChild, const QDomNode& refChild);
0127     QDomNode insertAfter(const QDomNode& newChild, const QDomNode& refChild);
0128     QDomNode replaceChild(const QDomNode& newChild, const QDomNode& oldChild);
0129     QDomNode removeChild(const QDomNode& oldChild);
0130     QDomNode appendChild(const QDomNode& newChild);
0131     bool hasChildNodes() const;
0132     QDomNode cloneNode(bool deep = true) const;
0133     void normalize();
0134     bool isSupported(const QString& feature, const QString& version) const;
0135 
0136     // DOM read-only attributes
0137     QString nodeName() const;
0138     NodeType nodeType() const;
0139     QDomNode parentNode() const;
0140     QDomNodeList childNodes() const;
0141     QDomNode firstChild() const;
0142     QDomNode lastChild() const;
0143     QDomNode previousSibling() const;
0144     QDomNode nextSibling() const;
0145     QDomNamedNodeMap attributes() const;
0146     QDomDocument ownerDocument() const;
0147     QString namespaceURI() const;
0148     QString localName() const;
0149     bool hasAttributes() const;
0150 
0151     // DOM attributes
0152     QString nodeValue() const;
0153     void setNodeValue(const QString &value);
0154     QString prefix() const;
0155     void setPrefix(const QString& pre);
0156 
0157     // Qt extensions
0158     bool isAttr() const;
0159     bool isCDATASection() const;
0160     bool isDocumentFragment() const;
0161     bool isDocument() const;
0162     bool isDocumentType() const;
0163     bool isElement() const;
0164     bool isEntityReference() const;
0165     bool isText() const;
0166     bool isEntity() const;
0167     bool isNotation() const;
0168     bool isProcessingInstruction() const;
0169     bool isCharacterData() const;
0170     bool isComment() const;
0171 
0172     /**
0173      * Shortcut to avoid dealing with QDomNodeList
0174      * all the time.
0175      */
0176     QDomNode namedItem(const QString& name) const;
0177 
0178     bool isNull() const;
0179     void clear();
0180 
0181     QDomAttr toAttr() const;
0182     QDomCDATASection toCDATASection() const;
0183     QDomDocumentFragment toDocumentFragment() const;
0184     QDomDocument toDocument() const;
0185     QDomDocumentType toDocumentType() const;
0186     QDomElement toElement() const;
0187     QDomEntityReference toEntityReference() const;
0188     QDomText toText() const;
0189     QDomEntity toEntity() const;
0190     QDomNotation toNotation() const;
0191     QDomProcessingInstruction toProcessingInstruction() const;
0192     QDomCharacterData toCharacterData() const;
0193     QDomComment toComment() const;
0194 
0195     void save(QTextStream&, int, EncodingPolicy=QDomNode::EncodingFromDocument) const;
0196 
0197     QDomElement firstChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const;
0198     QDomElement lastChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const;
0199     QDomElement previousSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const;
0200     QDomElement nextSiblingElement(const QString &taName = QString(), const QString &namespaceURI = QString()) const;
0201 
0202     int lineNumber() const;
0203     int columnNumber() const;
0204 
0205 protected:
0206     QDomNodePrivate* impl;
0207     QDomNode(QDomNodePrivate*);
0208 
0209 private:
0210     friend class ::tst_QDom;
0211     friend class QDomDocument;
0212     friend class QDomDocumentType;
0213     friend class QDomNodeList;
0214     friend class QDomNamedNodeMap;
0215 };
0216 
0217 class Q_XML_EXPORT QDomNodeList
0218 {
0219 public:
0220     QDomNodeList();
0221     QDomNodeList(const QDomNodeList &nodeList);
0222     QDomNodeList& operator=(const QDomNodeList &other);
0223 #if QT_XML_REMOVED_SINCE(6, 9)
0224     bool operator==(const QDomNodeList &other) const;
0225     bool operator!=(const QDomNodeList &other) const;
0226 #endif
0227     ~QDomNodeList();
0228 
0229     // DOM functions
0230     QDomNode item(int index) const;
0231     inline QDomNode at(int index) const { return item(index); } // Qt API consistency
0232 
0233     // DOM read only attributes
0234     int length() const;
0235     inline int count() const { return length(); } // Qt API consitancy
0236     inline int size() const { return length(); } // Qt API consistency
0237     inline bool isEmpty() const { return length() == 0; } // Qt API consistency
0238 
0239 private:
0240     Q_XML_EXPORT friend bool comparesEqual(const QDomNodeList &lhs, const QDomNodeList &rhs) noexcept;
0241     Q_DECLARE_EQUALITY_COMPARABLE(QDomNodeList)
0242 
0243     int noexceptLength() const noexcept;
0244 
0245     class It
0246     {
0247         const QDomNodeListPrivate *parent;
0248         QDomNodePrivate *current;
0249 
0250         friend class QDomNodeList;
0251         friend class QDomNodeListPrivate;
0252         Q_XML_EXPORT It(const QDomNodeListPrivate *lp, bool start) noexcept;
0253 
0254         friend constexpr bool comparesEqual(const It &lhs, const It &rhs)
0255         { Q_ASSERT(lhs.parent == rhs.parent); return lhs.current == rhs.current; }
0256         Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(It);
0257 
0258         Q_XML_EXPORT static QDomNodePrivate *findNextInOrder(const QDomNodeListPrivate *parent, QDomNodePrivate *current);
0259         Q_XML_EXPORT static QDomNodePrivate *findPrevInOrder(const QDomNodeListPrivate *parent, QDomNodePrivate *current);
0260 
0261     public:
0262         // Rule Of Zero applies
0263         It() = default;
0264 
0265         using iterator_category = std::bidirectional_iterator_tag;
0266         using value_type = QDomNode;
0267         using element_type = const QDomNode;
0268         using difference_type = qptrdiff; // difference to [container.reqmts]
0269         using reference = value_type;     // difference to [container.reqmts]
0270         using pointer = QtPrivate::ArrowProxy<reference>;
0271 
0272         reference operator*() const { return QDomNode(current); }
0273         pointer operator->() const { return { **this }; }
0274 
0275         It &operator++() { current = findNextInOrder(parent, current); return *this; }
0276         It operator++(int) { auto copy = *this; ++*this; return copy; }
0277 
0278         It &operator--() { current = findPrevInOrder(parent, current); return *this; }
0279         It operator--(int) { auto copy = *this; --*this; return copy; }
0280     };
0281 
0282 public:
0283     using const_iterator = It;
0284     using const_reverse_iterator = std::reverse_iterator<const_iterator>;
0285 
0286     using value_type = It::value_type;
0287     using difference_type = It::difference_type;
0288     using reference = It::reference;
0289     using const_reference = reference;
0290     using pointer = It::pointer;
0291     using const_pointer = pointer;
0292 
0293     [[nodiscard]] const_iterator begin()  const noexcept { return It{impl, true}; }
0294     [[nodiscard]] const_iterator end()    const noexcept { return It{impl, false}; }
0295     [[nodiscard]] const_iterator cbegin() const noexcept { return begin(); }
0296     [[nodiscard]] const_iterator cend()   const noexcept { return end(); }
0297 
0298     [[nodiscard]] const_reverse_iterator rbegin()  const noexcept { return const_reverse_iterator{end()}; }
0299     [[nodiscard]] const_reverse_iterator rend()    const noexcept { return const_reverse_iterator{begin()}; }
0300     [[nodiscard]] const_reverse_iterator crbegin() const noexcept { return rbegin(); }
0301     [[nodiscard]] const_reverse_iterator crend()   const noexcept { return rend(); }
0302 
0303     [[nodiscard]] const_iterator constBegin() const noexcept { return begin(); }
0304     [[nodiscard]] const_iterator constEnd()   const noexcept { return end(); }
0305 
0306 private:
0307     QDomNodeListPrivate* impl;
0308     QDomNodeList(QDomNodeListPrivate*);
0309 
0310     friend class QDomNode;
0311     friend class QDomElement;
0312     friend class QDomDocument;
0313     friend class ::tst_QDom;
0314 };
0315 
0316 class Q_XML_EXPORT QDomDocumentType : public QDomNode
0317 {
0318 public:
0319     QDomDocumentType();
0320     QDomDocumentType(const QDomDocumentType &documentType);
0321     QDomDocumentType& operator=(const QDomDocumentType &other);
0322 
0323     // DOM read only attributes
0324     QString name() const;
0325     QDomNamedNodeMap entities() const;
0326     QDomNamedNodeMap notations() const;
0327     QString publicId() const;
0328     QString systemId() const;
0329     QString internalSubset() const;
0330 
0331     // Overridden from QDomNode
0332     inline QDomNode::NodeType nodeType() const { return DocumentTypeNode; }
0333 
0334 private:
0335     QDomDocumentType(QDomDocumentTypePrivate*);
0336 
0337     friend class QDomImplementation;
0338     friend class QDomDocument;
0339     friend class QDomNode;
0340     friend class ::tst_QDom;
0341 };
0342 
0343 class Q_XML_EXPORT QDomDocument : public QDomNode
0344 {
0345 public:
0346     enum class ParseOption {
0347         Default = 0x00,
0348         UseNamespaceProcessing = 0x01,
0349         PreserveSpacingOnlyNodes = 0x02,
0350     };
0351     Q_DECLARE_FLAGS(ParseOptions, ParseOption)
0352 
0353     struct ParseResult
0354     {
0355         QString errorMessage;
0356         qsizetype errorLine = 0;
0357         qsizetype errorColumn = 0;
0358 
0359         explicit operator bool() const noexcept { return errorMessage.isEmpty(); }
0360     };
0361 
0362     QDomDocument();
0363     explicit QDomDocument(const QString& name);
0364     explicit QDomDocument(const QDomDocumentType& doctype);
0365     QDomDocument(const QDomDocument &document);
0366     QDomDocument& operator=(const QDomDocument &other);
0367     ~QDomDocument();
0368 
0369     // DOM functions
0370     QDomElement createElement(const QString& tagName);
0371     QDomDocumentFragment createDocumentFragment();
0372     QDomText createTextNode(const QString& data);
0373     QDomComment createComment(const QString& data);
0374     QDomCDATASection createCDATASection(const QString& data);
0375     QDomProcessingInstruction createProcessingInstruction(const QString& target, const QString& data);
0376     QDomAttr createAttribute(const QString& name);
0377     QDomEntityReference createEntityReference(const QString& name);
0378     QDomNodeList elementsByTagName(const QString& tagname) const;
0379     QDomNode importNode(const QDomNode& importedNode, bool deep);
0380     QDomElement createElementNS(const QString& nsURI, const QString& qName);
0381     QDomAttr createAttributeNS(const QString& nsURI, const QString& qName);
0382     QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName);
0383     QDomElement elementById(const QString& elementId);
0384 
0385     // DOM read only attributes
0386     QDomDocumentType doctype() const;
0387     QDomImplementation implementation() const;
0388     QDomElement documentElement() const;
0389 
0390     // Overridden from QDomNode
0391     inline QDomNode::NodeType nodeType() const { return DocumentNode; }
0392 
0393     // Qt extensions
0394 #if QT_DEPRECATED_SINCE(6, 8)
0395     QT_DEPRECATED_VERSION_X_6_8("Use the overload taking ParseOptions instead.")
0396     bool setContent(const QByteArray &text, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr);
0397     QT_DEPRECATED_VERSION_X_6_8("Use the overload taking ParseOptions instead.")
0398     bool setContent(const QString &text, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr);
0399     QT_DEPRECATED_VERSION_X_6_8("Use the overload taking ParseOptions instead.")
0400     bool setContent(QIODevice *dev, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr);
0401     QT_DEPRECATED_VERSION_X_6_8("Use the overload returning ParseResult instead.")
0402     bool setContent(const QByteArray &text, QString *errorMsg, int *errorLine = nullptr, int *errorColumn = nullptr);
0403     QT_DEPRECATED_VERSION_X_6_8("Use the overload returning ParseResult instead.")
0404     bool setContent(const QString &text, QString *errorMsg, int *errorLine = nullptr, int *errorColumn = nullptr);
0405     QT_DEPRECATED_VERSION_X_6_8("Use the overload returning ParseResult instead.")
0406     bool setContent(QIODevice *dev, QString *errorMsg, int *errorLine = nullptr, int *errorColumn = nullptr);
0407     QT_DEPRECATED_VERSION_X_6_8("Use the overload taking ParseOptions instead.")
0408     bool setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg = nullptr,
0409                     int *errorLine = nullptr, int *errorColumn = nullptr);
0410 #endif // QT_DEPRECATED_SINCE(6, 8)
0411 
0412     Q_WEAK_OVERLOAD
0413     ParseResult setContent(const QByteArray &data, ParseOptions options = ParseOption::Default)
0414     { return setContentImpl(data, options); }
0415     ParseResult setContent(QAnyStringView data, ParseOptions options = ParseOption::Default);
0416     ParseResult setContent(QIODevice *device, ParseOptions options = ParseOption::Default);
0417     ParseResult setContent(QXmlStreamReader *reader, ParseOptions options = ParseOption::Default);
0418 
0419     // Qt extensions
0420     QString toString(int indent = 1) const;
0421     QByteArray toByteArray(int indent = 1) const;
0422 
0423 private:
0424     ParseResult setContentImpl(const QByteArray &data, ParseOptions options);
0425 
0426     QDomDocument(QDomDocumentPrivate*);
0427 
0428     friend class QDomNode;
0429 };
0430 
0431 class Q_XML_EXPORT QDomNamedNodeMap
0432 {
0433 public:
0434     QDomNamedNodeMap();
0435     QDomNamedNodeMap(const QDomNamedNodeMap &namedNodeMap);
0436     QDomNamedNodeMap& operator=(const QDomNamedNodeMap &other);
0437     bool operator==(const QDomNamedNodeMap &other) const;
0438     bool operator!=(const QDomNamedNodeMap &other) const;
0439     ~QDomNamedNodeMap();
0440 
0441     // DOM functions
0442     QDomNode namedItem(const QString& name) const;
0443     QDomNode setNamedItem(const QDomNode& newNode);
0444     QDomNode removeNamedItem(const QString& name);
0445     QDomNode item(int index) const;
0446     QDomNode namedItemNS(const QString& nsURI, const QString& localName) const;
0447     QDomNode setNamedItemNS(const QDomNode& newNode);
0448     QDomNode removeNamedItemNS(const QString& nsURI, const QString& localName);
0449 
0450     // DOM read only attributes
0451     int length() const;
0452     int count() const { return length(); } // Qt API consitancy
0453     inline int size() const { return length(); } // Qt API consistency
0454     inline bool isEmpty() const { return length() == 0; } // Qt API consistency
0455 
0456     // Qt extension
0457     bool contains(const QString& name) const;
0458 
0459 private:
0460     QDomNamedNodeMapPrivate* impl;
0461     QDomNamedNodeMap(QDomNamedNodeMapPrivate*);
0462 
0463     friend class QDomNode;
0464     friend class QDomDocumentType;
0465     friend class QDomElement;
0466 };
0467 
0468 class Q_XML_EXPORT QDomDocumentFragment : public QDomNode
0469 {
0470 public:
0471     QDomDocumentFragment();
0472     QDomDocumentFragment(const QDomDocumentFragment &documentFragment);
0473     QDomDocumentFragment& operator=(const QDomDocumentFragment &other);
0474 
0475     // Overridden from QDomNode
0476     inline QDomNode::NodeType nodeType() const { return DocumentFragmentNode; }
0477 
0478 private:
0479     QDomDocumentFragment(QDomDocumentFragmentPrivate*);
0480 
0481     friend class QDomDocument;
0482     friend class QDomNode;
0483 };
0484 
0485 class Q_XML_EXPORT QDomCharacterData : public QDomNode
0486 {
0487 public:
0488     QDomCharacterData();
0489     QDomCharacterData(const QDomCharacterData &characterData);
0490     QDomCharacterData& operator=(const QDomCharacterData &other);
0491 
0492     // DOM functions
0493     QString substringData(unsigned long offset, unsigned long count);
0494     void appendData(const QString& arg);
0495     void insertData(unsigned long offset, const QString& arg);
0496     void deleteData(unsigned long offset, unsigned long count);
0497     void replaceData(unsigned long offset, unsigned long count, const QString& arg);
0498 
0499     // DOM read only attributes
0500     int length() const;
0501 
0502     // DOM attributes
0503     QString data() const;
0504     void setData(const QString &data);
0505 
0506     // Overridden from QDomNode
0507     QDomNode::NodeType nodeType() const;
0508 
0509 private:
0510     QDomCharacterData(QDomCharacterDataPrivate*);
0511 
0512     friend class QDomDocument;
0513     friend class QDomText;
0514     friend class QDomComment;
0515     friend class QDomNode;
0516 };
0517 
0518 class Q_XML_EXPORT QDomAttr : public QDomNode
0519 {
0520 public:
0521     QDomAttr();
0522     QDomAttr(const QDomAttr &attr);
0523     QDomAttr& operator=(const QDomAttr &other);
0524 
0525     // DOM read only attributes
0526     QString name() const;
0527     bool specified() const;
0528     QDomElement ownerElement() const;
0529 
0530     // DOM attributes
0531     QString value() const;
0532     void setValue(const QString &value);
0533 
0534     // Overridden from QDomNode
0535     inline QDomNode::NodeType nodeType() const { return AttributeNode; }
0536 
0537 private:
0538     QDomAttr(QDomAttrPrivate*);
0539 
0540     friend class QDomDocument;
0541     friend class QDomElement;
0542     friend class QDomNode;
0543 };
0544 
0545 class Q_XML_EXPORT QDomElement : public QDomNode
0546 {
0547 public:
0548     QDomElement();
0549     QDomElement(const QDomElement &element);
0550     QDomElement& operator=(const QDomElement &other);
0551 
0552     // DOM functions
0553     QString attribute(const QString& name, const QString& defValue = QString() ) const;
0554     void setAttribute(const QString& name, const QString& value);
0555     void setAttribute(const QString& name, qlonglong value);
0556     void setAttribute(const QString& name, qulonglong value);
0557     inline void setAttribute(const QString& name, int value)
0558         { setAttribute(name, qlonglong(value)); }
0559     inline void setAttribute(const QString& name, uint value)
0560         { setAttribute(name, qulonglong(value)); }
0561     void setAttribute(const QString& name, float value);
0562     void setAttribute(const QString& name, double value);
0563     void removeAttribute(const QString& name);
0564     QDomAttr attributeNode(const QString& name);
0565     QDomAttr setAttributeNode(const QDomAttr& newAttr);
0566     QDomAttr removeAttributeNode(const QDomAttr& oldAttr);
0567     QDomNodeList elementsByTagName(const QString& tagname) const;
0568     bool hasAttribute(const QString& name) const;
0569 
0570     QString attributeNS(const QString& nsURI, const QString& localName, const QString& defValue = QString()) const;
0571     void setAttributeNS(const QString& nsURI, const QString& qName, const QString& value);
0572     inline void setAttributeNS(const QString& nsURI, const QString& qName, int value)
0573         { setAttributeNS(nsURI, qName, qlonglong(value)); }
0574     inline void setAttributeNS(const QString& nsURI, const QString& qName, uint value)
0575         { setAttributeNS(nsURI, qName, qulonglong(value)); }
0576     void setAttributeNS(const QString& nsURI, const QString& qName, qlonglong value);
0577     void setAttributeNS(const QString& nsURI, const QString& qName, qulonglong value);
0578     void setAttributeNS(const QString& nsURI, const QString& qName, double value);
0579     void removeAttributeNS(const QString& nsURI, const QString& localName);
0580     QDomAttr attributeNodeNS(const QString& nsURI, const QString& localName);
0581     QDomAttr setAttributeNodeNS(const QDomAttr& newAttr);
0582     QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName) const;
0583     bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
0584 
0585     // DOM read only attributes
0586     QString tagName() const;
0587     void setTagName(const QString& name); // Qt extension
0588 
0589     // Overridden from QDomNode
0590     QDomNamedNodeMap attributes() const;
0591     inline QDomNode::NodeType nodeType() const { return ElementNode; }
0592 
0593     QString text() const;
0594 
0595 private:
0596     QDomElement(QDomElementPrivate*);
0597 
0598     friend class QDomDocument;
0599     friend class QDomNode;
0600     friend class QDomAttr;
0601 };
0602 
0603 class Q_XML_EXPORT QDomText : public QDomCharacterData
0604 {
0605 public:
0606     QDomText();
0607     QDomText(const QDomText &text);
0608     QDomText& operator=(const QDomText &other);
0609 
0610     // DOM functions
0611     QDomText splitText(int offset);
0612 
0613     // Overridden from QDomCharacterData
0614     inline QDomNode::NodeType nodeType() const { return TextNode; }
0615 
0616 private:
0617     QDomText(QDomTextPrivate*);
0618 
0619     friend class QDomCDATASection;
0620     friend class QDomDocument;
0621     friend class QDomNode;
0622 };
0623 
0624 class Q_XML_EXPORT QDomComment : public QDomCharacterData
0625 {
0626 public:
0627     QDomComment();
0628     QDomComment(const QDomComment &comment);
0629     QDomComment& operator=(const QDomComment &other);
0630 
0631     // Overridden from QDomCharacterData
0632     inline QDomNode::NodeType nodeType() const { return CommentNode; }
0633 
0634 private:
0635     QDomComment(QDomCommentPrivate*);
0636 
0637     friend class QDomDocument;
0638     friend class QDomNode;
0639 };
0640 
0641 class Q_XML_EXPORT QDomCDATASection : public QDomText
0642 {
0643 public:
0644     QDomCDATASection();
0645     QDomCDATASection(const QDomCDATASection &cdataSection);
0646     QDomCDATASection& operator=(const QDomCDATASection &other);
0647 
0648     // Overridden from QDomText
0649     inline QDomNode::NodeType nodeType() const { return CDATASectionNode; }
0650 
0651 private:
0652     QDomCDATASection(QDomCDATASectionPrivate*);
0653 
0654     friend class QDomDocument;
0655     friend class QDomNode;
0656 };
0657 
0658 class Q_XML_EXPORT QDomNotation : public QDomNode
0659 {
0660 public:
0661     QDomNotation();
0662     QDomNotation(const QDomNotation &notation);
0663     QDomNotation& operator=(const QDomNotation &other);
0664 
0665     // DOM read only attributes
0666     QString publicId() const;
0667     QString systemId() const;
0668 
0669     // Overridden from QDomNode
0670     inline QDomNode::NodeType nodeType() const { return NotationNode; }
0671 
0672 private:
0673     QDomNotation(QDomNotationPrivate*);
0674 
0675     friend class QDomDocument;
0676     friend class QDomNode;
0677 };
0678 
0679 class Q_XML_EXPORT QDomEntity : public QDomNode
0680 {
0681 public:
0682     QDomEntity();
0683     QDomEntity(const QDomEntity &entity);
0684     QDomEntity& operator=(const QDomEntity &other);
0685 
0686     // DOM read only attributes
0687     QString publicId() const;
0688     QString systemId() const;
0689     QString notationName() const;
0690 
0691     // Overridden from QDomNode
0692     inline QDomNode::NodeType nodeType() const { return EntityNode; }
0693 
0694 private:
0695     QDomEntity(QDomEntityPrivate*);
0696 
0697     friend class QDomNode;
0698 };
0699 
0700 class Q_XML_EXPORT QDomEntityReference : public QDomNode
0701 {
0702 public:
0703     QDomEntityReference();
0704     QDomEntityReference(const QDomEntityReference &entityReference);
0705     QDomEntityReference& operator=(const QDomEntityReference &other);
0706 
0707     // Overridden from QDomNode
0708     inline QDomNode::NodeType nodeType() const { return EntityReferenceNode; }
0709 
0710 private:
0711     QDomEntityReference(QDomEntityReferencePrivate*);
0712 
0713     friend class QDomDocument;
0714     friend class QDomNode;
0715 };
0716 
0717 class Q_XML_EXPORT QDomProcessingInstruction : public QDomNode
0718 {
0719 public:
0720     QDomProcessingInstruction();
0721     QDomProcessingInstruction(const QDomProcessingInstruction &processingInstruction);
0722     QDomProcessingInstruction& operator=(const QDomProcessingInstruction &other);
0723 
0724     // DOM read only attributes
0725     QString target() const;
0726 
0727     // DOM attributes
0728     QString data() const;
0729     void setData(const QString &data);
0730 
0731     // Overridden from QDomNode
0732     inline QDomNode::NodeType nodeType() const { return ProcessingInstructionNode; }
0733 
0734 private:
0735     QDomProcessingInstruction(QDomProcessingInstructionPrivate*);
0736 
0737     friend class QDomDocument;
0738     friend class QDomNode;
0739 };
0740 
0741 
0742 Q_XML_EXPORT QTextStream& operator<<(QTextStream& stream, const QDomNode& node);
0743 
0744 QT_END_NAMESPACE
0745 
0746 #endif // feature dom
0747 
0748 #endif // QDOM_H