You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qt3/src/xml/qdom.h

678 lines
21 KiB

/****************************************************************************
**
** Definition of QDomDocument and related classes.
**
** Created : 000518
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the xml module of the Qt GUI Toolkit.
**
** This file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free
** Software Foundation and appearing in the files LICENSE.GPL2
** and LICENSE.GPL3 included in the packaging of this file.
** Alternatively you may (at your option) use any later version
** of the GNU General Public License if such license has been
** publicly approved by Trolltech ASA (or its successors, if any)
** and the KDE Free Qt Foundation.
**
** Please review the following information to ensure GNU General
** Public Licensing requirements will be met:
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
** or contact the sales department at sales@trolltech.com.
**
** This file may be used under the terms of the Q Public License as
** defined by Trolltech ASA and appearing in the file LICENSE.QPL
** included in the packaging of this file. Licensees holding valid Qt
** Commercial licenses may use this file in accordance with the Qt
** Commercial License Agreement provided with the Software.
**
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
** herein.
**
**********************************************************************/
#ifndef QDOM_H
#define QDOM_H
#ifndef QT_H
#include "qstring.h"
#endif // QT_H
#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML )
#define QM_EXPORT_DOM
#else
#define QM_EXPORT_DOM Q_EXPORT
#endif
#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 QM_EXPORT_DOM QDomImplementation
{
public:
QDomImplementation();
QDomImplementation( const QDomImplementation& );
virtual ~QDomImplementation();
QDomImplementation& operator= ( const QDomImplementation& );
bool operator== ( const QDomImplementation& ) const;
bool operator!= ( const QDomImplementation& ) const;
// functions
virtual bool hasFeature( const QString& feature, const QString& version );
virtual QDomDocumentType createDocumentType( const QString& qName, const QString& publicId, const QString& systemId );
virtual QDomDocument createDocument( const QString& nsURI, const QString& qName, const QDomDocumentType& doctype );
// Qt extension
bool isNull();
private:
QDomImplementationPrivate* impl;
QDomImplementation( QDomImplementationPrivate* );
friend class QDomDocument;
};
class QM_EXPORT_DOM 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
};
QDomNode();
QDomNode( const QDomNode& );
QDomNode& operator= ( const QDomNode& );
bool operator== ( const QDomNode& ) const;
bool operator!= ( const QDomNode& ) const;
virtual ~QDomNode();
// DOM functions
virtual QDomNode insertBefore( const QDomNode& newChild, const QDomNode& refChild );
virtual QDomNode insertAfter( const QDomNode& newChild, const QDomNode& refChild );
virtual QDomNode replaceChild( const QDomNode& newChild, const QDomNode& oldChild );
virtual QDomNode removeChild( const QDomNode& oldChild );
virtual QDomNode appendChild( const QDomNode& newChild );
virtual bool hasChildNodes() const;
virtual QDomNode cloneNode( bool deep = TRUE ) const;
virtual void normalize();
virtual bool isSupported( const QString& feature, const QString& version ) const;
// DOM read only attributes
virtual QString nodeName() const;
virtual QDomNode::NodeType nodeType() const;
virtual QDomNode parentNode() const;
virtual QDomNodeList childNodes() const;
virtual QDomNode firstChild() const;
virtual QDomNode lastChild() const;
virtual QDomNode previousSibling() const;
virtual QDomNode nextSibling() const;
virtual QDomNamedNodeMap attributes() const;
virtual QDomDocument ownerDocument() const;
virtual QString namespaceURI() const;
virtual QString localName() const;
virtual bool hasAttributes() const;
// DOM attributes
virtual QString nodeValue() const;
virtual void setNodeValue( const QString& );
virtual QString prefix() const;
virtual void setPrefix( const QString& pre );
// Qt extensions
virtual bool isAttr() const;
virtual bool isCDATASection() const;
virtual bool isDocumentFragment() const;
virtual bool isDocument() const;
virtual bool isDocumentType() const;
virtual bool isElement() const;
virtual bool isEntityReference() const;
virtual bool isText() const;
virtual bool isEntity() const;
virtual bool isNotation() const;
virtual bool isProcessingInstruction() const;
virtual bool isCharacterData() const;
virtual 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();
QDomCDATASection toCDATASection();
QDomDocumentFragment toDocumentFragment();
QDomDocument toDocument();
QDomDocumentType toDocumentType();
QDomElement toElement();
QDomEntityReference toEntityReference();
QDomText toText();
QDomEntity toEntity();
QDomNotation toNotation();
QDomProcessingInstruction toProcessingInstruction();
QDomCharacterData toCharacterData();
QDomComment toComment();
void save( QTextStream&, int ) const;
protected:
QDomNodePrivate* impl;
QDomNode( QDomNodePrivate* );
private:
friend class QDomDocument;
friend class QDomDocumentType;
friend class QDomNodeList;
friend class QDomNamedNodeMap;
};
class QM_EXPORT_DOM QDomNodeList
{
public:
QDomNodeList();
QDomNodeList( const QDomNodeList& );
QDomNodeList& operator= ( const QDomNodeList& );
bool operator== ( const QDomNodeList& ) const;
bool operator!= ( const QDomNodeList& ) const;
virtual ~QDomNodeList();
// DOM functions
virtual QDomNode item( int index ) const;
// DOM read only attributes
virtual uint length() const;
uint count() const { return length(); } // Qt API consitancy
private:
QDomNodeListPrivate* impl;
QDomNodeList( QDomNodeListPrivate* );
friend class QDomNode;
friend class QDomElement;
friend class QDomDocument;
};
class QM_EXPORT_DOM QDomDocumentType : public QDomNode
{
public:
QDomDocumentType();
QDomDocumentType( const QDomDocumentType& x );
QDomDocumentType& operator= ( const QDomDocumentType& );
~QDomDocumentType();
// DOM read only attributes
virtual QString name() const;
virtual QDomNamedNodeMap entities() const;
virtual QDomNamedNodeMap notations() const;
virtual QString publicId() const;
virtual QString systemId() const;
virtual QString internalSubset() const;
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isDocumentType() const;
private:
QDomDocumentType( QDomDocumentTypePrivate* );
friend class QDomImplementation;
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomDocument : public QDomNode
{
public:
QDomDocument();
Q_EXPLICIT QDomDocument( const QString& name );
Q_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;
// Qt extensions
bool setContent( const QCString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
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( const QCString& text, 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 );
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isDocument() const;
// Qt extensions
QString toString() const; // ### Qt 4: merge the two overloads
QString toString( int ) const;
QCString toCString() const; // ### Qt 4: merge the two overloads
QCString toCString( int ) const;
private:
QDomDocument( QDomDocumentPrivate* );
friend class QDomNode;
};
class QM_EXPORT_DOM 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;
uint count() const { return length(); } // Qt API consitancy
// Qt extension
bool contains( const QString& name ) const;
private:
QDomNamedNodeMapPrivate* impl;
QDomNamedNodeMap( QDomNamedNodeMapPrivate* );
friend class QDomNode;
friend class QDomDocumentType;
friend class QDomElement;
};
class QM_EXPORT_DOM QDomDocumentFragment : public QDomNode
{
public:
QDomDocumentFragment();
QDomDocumentFragment( const QDomDocumentFragment& x );
QDomDocumentFragment& operator= ( const QDomDocumentFragment& );
~QDomDocumentFragment();
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isDocumentFragment() const;
private:
QDomDocumentFragment( QDomDocumentFragmentPrivate* );
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomCharacterData : public QDomNode
{
public:
QDomCharacterData();
QDomCharacterData( const QDomCharacterData& x );
QDomCharacterData& operator= ( const QDomCharacterData& );
~QDomCharacterData();
// DOM functions
virtual QString substringData( unsigned long offset, unsigned long count );
virtual void appendData( const QString& arg );
virtual void insertData( unsigned long offset, const QString& arg );
virtual void deleteData( unsigned long offset, unsigned long count );
virtual void replaceData( unsigned long offset, unsigned long count, const QString& arg );
// DOM read only attributes
virtual uint length() const;
// DOM attributes
virtual QString data() const;
virtual void setData( const QString& );
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isCharacterData() const;
private:
QDomCharacterData( QDomCharacterDataPrivate* );
friend class QDomDocument;
friend class QDomText;
friend class QDomComment;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomAttr : public QDomNode
{
public:
QDomAttr();
QDomAttr( const QDomAttr& x );
QDomAttr& operator= ( const QDomAttr& );
~QDomAttr();
// DOM read only attributes
virtual QString name() const;
virtual bool specified() const;
virtual QDomElement ownerElement() const;
// DOM attributes
virtual QString value() const;
virtual void setValue( const QString& );
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isAttr() const;
private:
QDomAttr( QDomAttrPrivate* );
friend class QDomDocument;
friend class QDomElement;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomElement : public QDomNode
{
public:
QDomElement();
QDomElement( const QDomElement& x );
QDomElement& operator= ( const QDomElement& );
~QDomElement();
// DOM functions
QString attribute( const QString& name, const QString& defValue = QString::null ) const;
void setAttribute( const QString& name, const QString& value );
void setAttribute( const QString& name, int value );
void setAttribute( const QString& name, uint value );
void setAttribute( const QString& name, long value );
void setAttribute( const QString& name, ulong 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 );
virtual QDomNodeList elementsByTagName( const QString& tagname ) const;
bool hasAttribute( const QString& name ) const;
QString attributeNS( const QString nsURI, const QString& localName, const QString& defValue ) const;
void setAttributeNS( const QString nsURI, const QString& qName, const QString& value );
void setAttributeNS( const QString nsURI, const QString& qName, int value );
void setAttributeNS( const QString nsURI, const QString& qName, uint value );
void setAttributeNS( const QString nsURI, const QString& qName, long value );
void setAttributeNS( const QString nsURI, const QString& qName, ulong 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 );
virtual 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
// Reimplemented from QDomNode
QDomNamedNodeMap attributes() const;
QDomNode::NodeType nodeType() const;
bool isElement() const;
QString text() const;
private:
QDomElement( QDomElementPrivate* );
friend class QDomDocument;
friend class QDomNode;
friend class QDomAttr;
};
class QM_EXPORT_DOM QDomText : public QDomCharacterData
{
public:
QDomText();
QDomText( const QDomText& x );
QDomText& operator= ( const QDomText& );
~QDomText();
// DOM functions
QDomText splitText( int offset );
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isText() const;
private:
QDomText( QDomTextPrivate* );
friend class QDomCDATASection;
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomComment : public QDomCharacterData
{
public:
QDomComment();
QDomComment( const QDomComment& x );
QDomComment& operator= ( const QDomComment& );
~QDomComment();
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isComment() const;
private:
QDomComment( QDomCommentPrivate* );
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomCDATASection : public QDomText
{
public:
QDomCDATASection();
QDomCDATASection( const QDomCDATASection& x );
QDomCDATASection& operator= ( const QDomCDATASection& );
~QDomCDATASection();
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isCDATASection() const;
private:
QDomCDATASection( QDomCDATASectionPrivate* );
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomNotation : public QDomNode
{
public:
QDomNotation();
QDomNotation( const QDomNotation& x );
QDomNotation& operator= ( const QDomNotation& );
~QDomNotation();
// DOM read only attributes
QString publicId() const;
QString systemId() const;
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isNotation() const;
private:
QDomNotation( QDomNotationPrivate* );
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomEntity : public QDomNode
{
public:
QDomEntity();
QDomEntity( const QDomEntity& x );
QDomEntity& operator= ( const QDomEntity& );
~QDomEntity();
// DOM read only attributes
virtual QString publicId() const;
virtual QString systemId() const;
virtual QString notationName() const;
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isEntity() const;
private:
QDomEntity( QDomEntityPrivate* );
friend class QDomNode;
};
class QM_EXPORT_DOM QDomEntityReference : public QDomNode
{
public:
QDomEntityReference();
QDomEntityReference( const QDomEntityReference& x );
QDomEntityReference& operator= ( const QDomEntityReference& );
~QDomEntityReference();
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isEntityReference() const;
private:
QDomEntityReference( QDomEntityReferencePrivate* );
friend class QDomDocument;
friend class QDomNode;
};
class QM_EXPORT_DOM QDomProcessingInstruction : public QDomNode
{
public:
QDomProcessingInstruction();
QDomProcessingInstruction( const QDomProcessingInstruction& x );
QDomProcessingInstruction& operator= ( const QDomProcessingInstruction& );
~QDomProcessingInstruction();
// DOM read only attributes
virtual QString target() const;
// DOM attributes
virtual QString data() const;
virtual void setData( const QString& d );
// Reimplemented from QDomNode
QDomNode::NodeType nodeType() const;
bool isProcessingInstruction() const;
private:
QDomProcessingInstruction( QDomProcessingInstructionPrivate* );
friend class QDomDocument;
friend class QDomNode;
};
QM_EXPORT_DOM QTextStream& operator<<( QTextStream&, const QDomNode& );
#endif //QT_NO_DOM
#endif // QDOM_H