summaryrefslogtreecommitdiffstats
path: root/src/xml/dom/qdom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml/dom/qdom.h')
-rw-r--r--src/xml/dom/qdom.h681
1 files changed, 681 insertions, 0 deletions
diff --git a/src/xml/dom/qdom.h b/src/xml/dom/qdom.h
new file mode 100644
index 0000000..f72361f
--- /dev/null
+++ b/src/xml/dom/qdom.h
@@ -0,0 +1,681 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QDOM_H
+#define QDOM_H
+
+#include <QtCore/qstring.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Xml)
+
+#ifndef QT_NO_DOM
+
+class QIODevice;
+class QTextStream;
+
+class QXmlInputSource;
+class QXmlReader;
+
+class QDomDocumentPrivate;
+class QDomDocumentTypePrivate;
+class QDomDocumentFragmentPrivate;
+class QDomNodePrivate;
+class QDomNodeListPrivate;
+class QDomImplementationPrivate;
+class QDomElementPrivate;
+class QDomNotationPrivate;
+class QDomEntityPrivate;
+class QDomEntityReferencePrivate;
+class QDomProcessingInstructionPrivate;
+class QDomAttrPrivate;
+class QDomCharacterDataPrivate;
+class QDomTextPrivate;
+class QDomCommentPrivate;
+class QDomCDATASectionPrivate;
+class QDomNamedNodeMapPrivate;
+class QDomImplementationPrivate;
+
+class QDomNodeList;
+class QDomElement;
+class QDomText;
+class QDomComment;
+class QDomCDATASection;
+class QDomProcessingInstruction;
+class QDomAttr;
+class QDomEntityReference;
+class QDomDocument;
+class QDomNamedNodeMap;
+class QDomDocument;
+class QDomDocumentFragment;
+class QDomDocumentType;
+class QDomImplementation;
+class QDomNode;
+class QDomEntity;
+class QDomNotation;
+class QDomCharacterData;
+
+class Q_XML_EXPORT QDomImplementation
+{
+public:
+ QDomImplementation();
+ QDomImplementation(const QDomImplementation&);
+ ~QDomImplementation();
+ QDomImplementation& operator= (const QDomImplementation&);
+ bool operator== (const QDomImplementation&) const;
+ bool operator!= (const QDomImplementation&) const;
+
+ // functions
+ bool hasFeature(const QString& feature, const QString& version) const;
+ QDomDocumentType createDocumentType(const QString& qName, const QString& publicId, const QString& systemId);
+ QDomDocument createDocument(const QString& nsURI, const QString& qName, const QDomDocumentType& doctype);
+
+ enum InvalidDataPolicy { AcceptInvalidChars = 0, DropInvalidChars, ReturnNullNode };
+ static InvalidDataPolicy invalidDataPolicy();
+ static void setInvalidDataPolicy(InvalidDataPolicy policy);
+
+ // Qt extension
+ bool isNull();
+
+private:
+ QDomImplementationPrivate* impl;
+ QDomImplementation(QDomImplementationPrivate*);
+
+ friend class QDomDocument;
+};
+
+class Q_XML_EXPORT QDomNode
+{
+public:
+ enum NodeType {
+ ElementNode = 1,
+ AttributeNode = 2,
+ TextNode = 3,
+ CDATASectionNode = 4,
+ EntityReferenceNode = 5,
+ EntityNode = 6,
+ ProcessingInstructionNode = 7,
+ CommentNode = 8,
+ DocumentNode = 9,
+ DocumentTypeNode = 10,
+ DocumentFragmentNode = 11,
+ NotationNode = 12,
+ BaseNode = 21,// this is not in the standard
+ CharacterDataNode = 22 // this is not in the standard
+ };
+
+ enum EncodingPolicy
+ {
+ EncodingFromDocument = 1,
+ EncodingFromTextStream = 2
+ };
+
+ QDomNode();
+ QDomNode(const QDomNode&);
+ QDomNode& operator= (const QDomNode&);
+ bool operator== (const QDomNode&) const;
+ bool operator!= (const QDomNode&) const;
+ ~QDomNode();
+
+ // DOM functions
+ QDomNode insertBefore(const QDomNode& newChild, const QDomNode& refChild);
+ QDomNode insertAfter(const QDomNode& newChild, const QDomNode& refChild);
+ QDomNode replaceChild(const QDomNode& newChild, const QDomNode& oldChild);
+ QDomNode removeChild(const QDomNode& oldChild);
+ QDomNode appendChild(const QDomNode& newChild);
+ bool hasChildNodes() const;
+ QDomNode cloneNode(bool deep = true) const;
+ void normalize();
+ bool isSupported(const QString& feature, const QString& version) const;
+
+ // DOM read-only attributes
+ QString nodeName() const;
+ NodeType nodeType() const;
+ QDomNode parentNode() const;
+ QDomNodeList childNodes() const;
+ QDomNode firstChild() const;
+ QDomNode lastChild() const;
+ QDomNode previousSibling() const;
+ QDomNode nextSibling() const;
+ QDomNamedNodeMap attributes() const;
+ QDomDocument ownerDocument() const;
+ QString namespaceURI() const;
+ QString localName() const;
+ bool hasAttributes() const;
+
+ // DOM attributes
+ QString nodeValue() const;
+ void setNodeValue(const QString&);
+ QString prefix() const;
+ void setPrefix(const QString& pre);
+
+ // Qt extensions
+ bool isAttr() const;
+ bool isCDATASection() const;
+ bool isDocumentFragment() const;
+ bool isDocument() const;
+ bool isDocumentType() const;
+ bool isElement() const;
+ bool isEntityReference() const;
+ bool isText() const;
+ bool isEntity() const;
+ bool isNotation() const;
+ bool isProcessingInstruction() const;
+ bool isCharacterData() const;
+ bool isComment() const;
+
+ /**
+ * Shortcut to avoid dealing with QDomNodeList
+ * all the time.
+ */
+ QDomNode namedItem(const QString& name) const;
+
+ bool isNull() const;
+ void clear();
+
+ QDomAttr toAttr() const;
+ QDomCDATASection toCDATASection() const;
+ QDomDocumentFragment toDocumentFragment() const;
+ QDomDocument toDocument() const;
+ QDomDocumentType toDocumentType() const;
+ QDomElement toElement() const;
+ QDomEntityReference toEntityReference() const;
+ QDomText toText() const;
+ QDomEntity toEntity() const;
+ QDomNotation toNotation() const;
+ QDomProcessingInstruction toProcessingInstruction() const;
+ QDomCharacterData toCharacterData() const;
+ QDomComment toComment() const;
+
+ void save(QTextStream&, int) const;
+ void save(QTextStream&, int, EncodingPolicy) const; // ### Qt 5: Merge overload(if we at all keep this)
+
+ QDomElement firstChildElement(const QString &tagName = QString()) const;
+ QDomElement lastChildElement(const QString &tagName = QString()) const;
+ QDomElement previousSiblingElement(const QString &tagName = QString()) const;
+ QDomElement nextSiblingElement(const QString &taName = QString()) const;
+
+ int lineNumber() const;
+ int columnNumber() const;
+
+protected:
+ QDomNodePrivate* impl;
+ QDomNode(QDomNodePrivate*);
+
+private:
+ friend class QDomDocument;
+ friend class QDomDocumentType;
+ friend class QDomNodeList;
+ friend class QDomNamedNodeMap;
+};
+
+class Q_XML_EXPORT QDomNodeList
+{
+public:
+ QDomNodeList();
+ QDomNodeList(const QDomNodeList&);
+ QDomNodeList& operator= (const QDomNodeList&);
+ bool operator== (const QDomNodeList&) const;
+ bool operator!= (const QDomNodeList&) const;
+ ~QDomNodeList();
+
+ // DOM functions
+ QDomNode item(int index) const;
+ inline QDomNode at(int index) const { return item(index); } // Qt API consistency
+
+ // DOM read only attributes
+ uint length() const;
+ inline int count() const { return length(); } // Qt API consitancy
+ inline int size() const { return length(); } // Qt API consistency
+ inline bool isEmpty() const { return length() == 0; } // Qt API consistency
+
+private:
+ QDomNodeListPrivate* impl;
+ QDomNodeList(QDomNodeListPrivate*);
+
+ friend class QDomNode;
+ friend class QDomElement;
+ friend class QDomDocument;
+};
+
+class Q_XML_EXPORT QDomDocumentType : public QDomNode
+{
+public:
+ QDomDocumentType();
+ QDomDocumentType(const QDomDocumentType& x);
+ QDomDocumentType& operator= (const QDomDocumentType&);
+
+ // DOM read only attributes
+ QString name() const;
+ QDomNamedNodeMap entities() const;
+ QDomNamedNodeMap notations() const;
+ QString publicId() const;
+ QString systemId() const;
+ QString internalSubset() const;
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return DocumentTypeNode; }
+
+private:
+ QDomDocumentType(QDomDocumentTypePrivate*);
+
+ friend class QDomImplementation;
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomDocument : public QDomNode
+{
+public:
+ QDomDocument();
+ explicit QDomDocument(const QString& name);
+ explicit QDomDocument(const QDomDocumentType& doctype);
+ QDomDocument(const QDomDocument& x);
+ QDomDocument& operator= (const QDomDocument&);
+ ~QDomDocument();
+
+ // DOM functions
+ QDomElement createElement(const QString& tagName);
+ QDomDocumentFragment createDocumentFragment();
+ QDomText createTextNode(const QString& data);
+ QDomComment createComment(const QString& data);
+ QDomCDATASection createCDATASection(const QString& data);
+ QDomProcessingInstruction createProcessingInstruction(const QString& target, const QString& data);
+ QDomAttr createAttribute(const QString& name);
+ QDomEntityReference createEntityReference(const QString& name);
+ QDomNodeList elementsByTagName(const QString& tagname) const;
+ QDomNode importNode(const QDomNode& importedNode, bool deep);
+ QDomElement createElementNS(const QString& nsURI, const QString& qName);
+ QDomAttr createAttributeNS(const QString& nsURI, const QString& qName);
+ QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName);
+ QDomElement elementById(const QString& elementId);
+
+ // DOM read only attributes
+ QDomDocumentType doctype() const;
+ QDomImplementation implementation() const;
+ QDomElement documentElement() const;
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return DocumentNode; }
+
+ // Qt extensions
+ bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+ bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
+
+ // Qt extensions
+ QString toString(int = 1) const;
+ QByteArray toByteArray(int = 1) const;
+
+private:
+ QDomDocument(QDomDocumentPrivate*);
+
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomNamedNodeMap
+{
+public:
+ QDomNamedNodeMap();
+ QDomNamedNodeMap(const QDomNamedNodeMap&);
+ QDomNamedNodeMap& operator= (const QDomNamedNodeMap&);
+ bool operator== (const QDomNamedNodeMap&) const;
+ bool operator!= (const QDomNamedNodeMap&) const;
+ ~QDomNamedNodeMap();
+
+ // DOM functions
+ QDomNode namedItem(const QString& name) const;
+ QDomNode setNamedItem(const QDomNode& newNode);
+ QDomNode removeNamedItem(const QString& name);
+ QDomNode item(int index) const;
+ QDomNode namedItemNS(const QString& nsURI, const QString& localName) const;
+ QDomNode setNamedItemNS(const QDomNode& newNode);
+ QDomNode removeNamedItemNS(const QString& nsURI, const QString& localName);
+
+ // DOM read only attributes
+ uint length() const;
+ int count() const { return length(); } // Qt API consitancy
+ inline int size() const { return length(); } // Qt API consistency
+ inline bool isEmpty() const { return length() == 0; } // Qt API consistency
+
+ // Qt extension
+ bool contains(const QString& name) const;
+
+private:
+ QDomNamedNodeMapPrivate* impl;
+ QDomNamedNodeMap(QDomNamedNodeMapPrivate*);
+
+ friend class QDomNode;
+ friend class QDomDocumentType;
+ friend class QDomElement;
+};
+
+class Q_XML_EXPORT QDomDocumentFragment : public QDomNode
+{
+public:
+ QDomDocumentFragment();
+ QDomDocumentFragment(const QDomDocumentFragment& x);
+ QDomDocumentFragment& operator= (const QDomDocumentFragment&);
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return DocumentFragmentNode; }
+
+private:
+ QDomDocumentFragment(QDomDocumentFragmentPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomCharacterData : public QDomNode
+{
+public:
+ QDomCharacterData();
+ QDomCharacterData(const QDomCharacterData& x);
+ QDomCharacterData& operator= (const QDomCharacterData&);
+
+ // DOM functions
+ QString substringData(unsigned long offset, unsigned long count);
+ void appendData(const QString& arg);
+ void insertData(unsigned long offset, const QString& arg);
+ void deleteData(unsigned long offset, unsigned long count);
+ void replaceData(unsigned long offset, unsigned long count, const QString& arg);
+
+ // DOM read only attributes
+ uint length() const;
+
+ // DOM attributes
+ QString data() const;
+ void setData(const QString&);
+
+ // Overridden from QDomNode
+ QDomNode::NodeType nodeType() const;
+
+private:
+ QDomCharacterData(QDomCharacterDataPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomText;
+ friend class QDomComment;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomAttr : public QDomNode
+{
+public:
+ QDomAttr();
+ QDomAttr(const QDomAttr& x);
+ QDomAttr& operator= (const QDomAttr&);
+
+ // DOM read only attributes
+ QString name() const;
+ bool specified() const;
+ QDomElement ownerElement() const;
+
+ // DOM attributes
+ QString value() const;
+ void setValue(const QString&);
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return AttributeNode; }
+
+private:
+ QDomAttr(QDomAttrPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomElement;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomElement : public QDomNode
+{
+public:
+ QDomElement();
+ QDomElement(const QDomElement& x);
+ QDomElement& operator= (const QDomElement&);
+
+ // DOM functions
+ QString attribute(const QString& name, const QString& defValue = QString() ) const;
+ void setAttribute(const QString& name, const QString& value);
+ void setAttribute(const QString& name, qlonglong value);
+ void setAttribute(const QString& name, qulonglong value);
+ inline void setAttribute(const QString& name, int value)
+ { setAttribute(name, qlonglong(value)); }
+ inline void setAttribute(const QString& name, uint value)
+ { setAttribute(name, qulonglong(value)); }
+ void setAttribute(const QString& name, float value);
+ void setAttribute(const QString& name, double value);
+ void removeAttribute(const QString& name);
+ QDomAttr attributeNode(const QString& name);
+ QDomAttr setAttributeNode(const QDomAttr& newAttr);
+ QDomAttr removeAttributeNode(const QDomAttr& oldAttr);
+ QDomNodeList elementsByTagName(const QString& tagname) const;
+ bool hasAttribute(const QString& name) const;
+
+ QString attributeNS(const QString nsURI, const QString& localName, const QString& defValue = QString()) const;
+ void setAttributeNS(const QString nsURI, const QString& qName, const QString& value);
+ inline void setAttributeNS(const QString nsURI, const QString& qName, int value)
+ { setAttributeNS(nsURI, qName, qlonglong(value)); }
+ inline void setAttributeNS(const QString nsURI, const QString& qName, uint value)
+ { setAttributeNS(nsURI, qName, qulonglong(value)); }
+ void setAttributeNS(const QString nsURI, const QString& qName, qlonglong value);
+ void setAttributeNS(const QString nsURI, const QString& qName, qulonglong value);
+ void setAttributeNS(const QString nsURI, const QString& qName, double value);
+ void removeAttributeNS(const QString& nsURI, const QString& localName);
+ QDomAttr attributeNodeNS(const QString& nsURI, const QString& localName);
+ QDomAttr setAttributeNodeNS(const QDomAttr& newAttr);
+ QDomNodeList elementsByTagNameNS(const QString& nsURI, const QString& localName) const;
+ bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
+
+ // DOM read only attributes
+ QString tagName() const;
+ void setTagName(const QString& name); // Qt extension
+
+ // Overridden from QDomNode
+ QDomNamedNodeMap attributes() const;
+ inline QDomNode::NodeType nodeType() const { return ElementNode; }
+
+ QString text() const;
+
+private:
+ QDomElement(QDomElementPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+ friend class QDomAttr;
+};
+
+class Q_XML_EXPORT QDomText : public QDomCharacterData
+{
+public:
+ QDomText();
+ QDomText(const QDomText& x);
+ QDomText& operator= (const QDomText&);
+
+ // DOM functions
+ QDomText splitText(int offset);
+
+ // Overridden from QDomCharacterData
+ inline QDomNode::NodeType nodeType() const { return TextNode; }
+
+private:
+ QDomText(QDomTextPrivate*);
+
+ friend class QDomCDATASection;
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomComment : public QDomCharacterData
+{
+public:
+ QDomComment();
+ QDomComment(const QDomComment& x);
+ QDomComment& operator= (const QDomComment&);
+
+ // Overridden from QDomCharacterData
+ inline QDomNode::NodeType nodeType() const { return CommentNode; }
+
+private:
+ QDomComment(QDomCommentPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomCDATASection : public QDomText
+{
+public:
+ QDomCDATASection();
+ QDomCDATASection(const QDomCDATASection& x);
+ QDomCDATASection& operator= (const QDomCDATASection&);
+
+ // Overridden from QDomText
+ inline QDomNode::NodeType nodeType() const { return CDATASectionNode; }
+
+private:
+ QDomCDATASection(QDomCDATASectionPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomNotation : public QDomNode
+{
+public:
+ QDomNotation();
+ QDomNotation(const QDomNotation& x);
+ QDomNotation& operator= (const QDomNotation&);
+
+ // DOM read only attributes
+ QString publicId() const;
+ QString systemId() const;
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return NotationNode; }
+
+private:
+ QDomNotation(QDomNotationPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomEntity : public QDomNode
+{
+public:
+ QDomEntity();
+ QDomEntity(const QDomEntity& x);
+ QDomEntity& operator= (const QDomEntity&);
+
+ // DOM read only attributes
+ QString publicId() const;
+ QString systemId() const;
+ QString notationName() const;
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return EntityNode; }
+
+private:
+ QDomEntity(QDomEntityPrivate*);
+
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomEntityReference : public QDomNode
+{
+public:
+ QDomEntityReference();
+ QDomEntityReference(const QDomEntityReference& x);
+ QDomEntityReference& operator= (const QDomEntityReference&);
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return EntityReferenceNode; }
+
+private:
+ QDomEntityReference(QDomEntityReferencePrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+class Q_XML_EXPORT QDomProcessingInstruction : public QDomNode
+{
+public:
+ QDomProcessingInstruction();
+ QDomProcessingInstruction(const QDomProcessingInstruction& x);
+ QDomProcessingInstruction& operator= (const QDomProcessingInstruction&);
+
+ // DOM read only attributes
+ QString target() const;
+
+ // DOM attributes
+ QString data() const;
+ void setData(const QString& d);
+
+ // Overridden from QDomNode
+ inline QDomNode::NodeType nodeType() const { return ProcessingInstructionNode; }
+
+private:
+ QDomProcessingInstruction(QDomProcessingInstructionPrivate*);
+
+ friend class QDomDocument;
+ friend class QDomNode;
+};
+
+
+Q_XML_EXPORT QTextStream& operator<<(QTextStream&, const QDomNode&);
+
+#endif // QT_NO_DOM
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QDOM_H