⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qdom.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    // Variables    QString m_sys;    QString m_pub;};class QDomEntityPrivate : public QDomNodePrivate{public:    QDomEntityPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name,                        const QString& pub, const QString& sys, const QString& notation);    QDomEntityPrivate(QDomEntityPrivate* n, bool deep);    // Reimplemented from QDomNodePrivate    QDomNodePrivate* cloneNode(bool deep = true);    virtual bool isEntity() const { return true; }    QDomNode::NodeType nodeType() const { return QDomNode::EntityNode; }    virtual void save(QTextStream& s, int, int) const;    // Variables    QString m_sys;    QString m_pub;    QString m_notationName;};class QDomEntityReferencePrivate : public QDomNodePrivate{public:    QDomEntityReferencePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name);    QDomEntityReferencePrivate(QDomNodePrivate* n, bool deep);    // Reimplemented from QDomNodePrivate    QDomNodePrivate* cloneNode(bool deep = true);    bool isEntityReference() const { return true; }    QDomNode::NodeType nodeType() const { return QDomNode::EntityReferenceNode; }    virtual void save(QTextStream& s, int, int) const;};class QDomProcessingInstructionPrivate : public QDomNodePrivate{public:    QDomProcessingInstructionPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& target,                                       const QString& data);    QDomProcessingInstructionPrivate(QDomProcessingInstructionPrivate* n, bool deep);    // Reimplemented from QDomNodePrivate    QDomNodePrivate* cloneNode(bool deep = true);    virtual bool isProcessingInstruction() const { return true; }    QDomNode::NodeType nodeType() const { return QDomNode::ProcessingInstructionNode; }    virtual void save(QTextStream& s, int, int) const;};class QDomDocumentPrivate : public QDomNodePrivate{public:    QDomDocumentPrivate();    QDomDocumentPrivate(const QString& name);    QDomDocumentPrivate(QDomDocumentTypePrivate* dt);    QDomDocumentPrivate(QDomDocumentPrivate* n, bool deep);    ~QDomDocumentPrivate();    bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn);    bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg, int *errorLine, int *errorColumn);    // Attributes    QDomDocumentTypePrivate* doctype() { return type; };    QDomImplementationPrivate* implementation() { return impl; };    QDomElementPrivate* documentElement();    // Factories    QDomElementPrivate* createElement(const QString& tagName);    QDomElementPrivate*        createElementNS(const QString& nsURI, const QString& qName);    QDomDocumentFragmentPrivate* createDocumentFragment();    QDomTextPrivate* createTextNode(const QString& data);    QDomCommentPrivate* createComment(const QString& data);    QDomCDATASectionPrivate* createCDATASection(const QString& data);    QDomProcessingInstructionPrivate* createProcessingInstruction(const QString& target, const QString& data);    QDomAttrPrivate* createAttribute(const QString& name);    QDomAttrPrivate* createAttributeNS(const QString& nsURI, const QString& qName);    QDomEntityReferencePrivate* createEntityReference(const QString& name);    QDomNodePrivate* importNode(const QDomNodePrivate* importedNode, bool deep);    // Reimplemented from QDomNodePrivate    QDomNodePrivate* cloneNode(bool deep = true);    bool isDocument() const { return true; }    QDomNode::NodeType nodeType() const { return QDomNode::DocumentNode; }    void clear();    // Variables    QDomImplementationPrivate* impl;    QDomDocumentTypePrivate* type;    void saveDocument(QTextStream& stream, const int indent, QDomNode::EncodingPolicy encUsed) const;};/************************************************************** * * QDomHandler * **************************************************************/class QDomHandler : public QXmlDefaultHandler{public:    QDomHandler(QDomDocumentPrivate* d, bool namespaceProcessing);    ~QDomHandler();    // content handler    bool endDocument();    bool startElement(const QString& nsURI, const QString& localName, const QString& qName, const QXmlAttributes& atts);    bool endElement(const QString& nsURI, const QString& localName, const QString& qName);    bool characters(const QString& ch);    bool processingInstruction(const QString& target, const QString& data);    bool skippedEntity(const QString& name);    // error handler    bool fatalError(const QXmlParseException& exception);    // lexical handler    bool startCDATA();    bool endCDATA();    bool startEntity(const QString &);    bool endEntity(const QString &);    bool startDTD(const QString& name, const QString& publicId, const QString& systemId);    bool comment(const QString& ch);    // decl handler    bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) ;    // DTD handler    bool notationDecl(const QString & name, const QString & publicId, const QString & systemId);    bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName) ;    void setDocumentLocator(QXmlLocator *locator);    QString errorMsg;    int errorLine;    int errorColumn;private:    QDomDocumentPrivate *doc;    QDomNodePrivate *node;    QString entityName;    bool cdata;    bool nsProcessing;    QXmlLocator *locator;};/************************************************************** * * Functions for verifying legal data * **************************************************************/QDomImplementation::InvalidDataPolicy QDomImplementationPrivate::invalidDataPolicy    = QDomImplementation::AcceptInvalidChars;// [5] Name ::= (Letter | '_' | ':') (NameChar)*static QString fixedXmlName(const QString &_name, bool *ok, bool namespaces = false){    QString name, prefix;    if (namespaces)        qt_split_namespace(prefix, name, _name, true);    else        name = _name;    if (name.isEmpty()) {        *ok = false;        return QString();    }    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return _name;    }    QString result;    bool firstChar = true;    for (int i = 0; i < name.size(); ++i) {        QChar c = name.at(i);        if (firstChar) {            if (QXmlUtils::isLetter(c) || c.unicode() == '_' || c.unicode() == ':') {                result.append(c);                firstChar = false;            } else if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {                *ok = false;                return QString();            }        } else {            if (QXmlUtils::isNameChar(c))                result.append(c);            else if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {                return QString();                *ok = false;            }        }    }    if (result.isEmpty()) {        *ok = false;        return QString();    }    *ok = true;    if (namespaces && !prefix.isEmpty())        return prefix + QLatin1Char(':') + result;    return result;}// [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)// '<', '&' and "]]>" will be escaped when writingstatic QString fixedCharData(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString result;    for (int i = 0; i < data.size(); ++i) {        QChar c = data.at(i);        if (QXmlUtils::isChar(c)) {            result.append(c);        } else if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        }    }    *ok = true;    return result;};// [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'// can't escape "--", since entities are not recognised within commentsstatic QString fixedComment(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString fixedData = fixedCharData(data, ok);    if (!*ok)        return QString();    for (;;) {        int idx = fixedData.indexOf(QLatin1String("--"));        if (idx == -1)            break;        if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        }        fixedData.remove(idx, 2);    }    *ok = true;    return fixedData;}// [20] CData ::= (Char* - (Char* ']]>' Char*))// can't escape "]]>", since entities are not recognised within commentsstatic QString fixedCDataSection(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString fixedData = fixedCharData(data, ok);    if (!*ok)        return QString();    for (;;) {        int idx = fixedData.indexOf(QLatin1String("]]>"));        if (idx == -1)            break;        if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        }        fixedData.remove(idx, 3);    }    *ok = true;    return fixedData;}// [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'static QString fixedPIData(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString fixedData = fixedCharData(data, ok);    if (!*ok)        return QString();    for (;;) {        int idx = fixedData.indexOf(QLatin1String("?>"));        if (idx == -1)            break;        if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        }        fixedData.remove(idx, 2);    }    *ok = true;    return fixedData;}// [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"// The correct quote will be chosen when writingstatic QString fixedPubidLiteral(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString result;    if(QXmlUtils::isPublicID(data))        result = data;    else if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {        *ok = false;        return QString();    }    if (result.indexOf(QLatin1Char('\'')) != -1        && result.indexOf(QLatin1Char('"')) != -1) {        if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        } else {            result.remove(QLatin1Char('\''));        }    }    *ok = true;    return result;}// [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")// The correct quote will be chosen when writingstatic QString fixedSystemLiteral(const QString &data, bool *ok){    if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::AcceptInvalidChars) {        *ok = true;        return data;    }    QString result = data;    if (result.indexOf(QLatin1Char('\'')) != -1        && result.indexOf(QLatin1Char('"')) != -1) {        if (QDomImplementationPrivate::invalidDataPolicy == QDomImplementation::ReturnNullNode) {            *ok = false;            return QString();        } else {            result.remove(QLatin1Char('\''));        }    }    *ok = true;    return result;}/************************************************************** * * QDomImplementationPrivate * **************************************************************/QDomImplementationPrivate* QDomImplementationPrivate::clone(){    QDomImplementationPrivate* p = new QDomImplementationPrivate;    // We are not interested in this node    p->ref.deref();    return p;}/************************************************************** * * QDomImplementation * **************************************************************//*!    \class QDomImplementation    \reentrant    \brief The QDomImplementation class provides information about the    features of the DOM implementation.    \module XML    \ingroup xml-tools    This class describes the features that are supported by the DOM    implementation. Currently the XML subset of DOM Level 1 and DOM    Level 2 Core are supported.    Normally you will use the function QDomDocument::implementation()    to get the implementation object.    You can create a new document type with createDocumentType() and a    new document with createDocument().    For further information about the Document Object Model see    \l{http://www.w3.org/TR/REC-DOM-Level-1/}{Level 1} and    \l{http://www.w3.org/TR/DOM-Level-2-Core/}{Level 2 Core}. For a more    general introduction of the DOM implementation see the QDomDocument    documentation.    \sa hasFeature()*//*!    Constructs a QDomImplementation object.*/QDomImplementation::QDomImplementation(){    impl = 0;}/*!    Constructs a copy of \a x.*/QDomImplementation::QDomImplementation(const QDomImplementation &x){    impl = x.impl;    if (impl)        impl->ref.ref();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -