QXmlDefaultHandler 类

QXmlDefaultHandler 类提供了所有 XML 处理器类的默认实现。 更多...

头文件 #include <QXmlDefaultHandler>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmakeQT += core5compat
继承自 QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, 和 QXmlDeclHandler

注意: 此类中的所有函数均是 可重入的

公共函数

重写的公共函数

虚拟 boolattributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value) override
虚拟 boolcharacters(const QString &ch) override
虚拟 boolcomment(const QString &ch) override
虚拟 boolendCDATA() override
虚拟 boolendDTD() override
虚拟 boolendDocument() override
虚拟 boolendElement(const QString &namespaceURI, const QString &">localName, const QString &qName) override
虚拟 boolendEntity(const QString &name) override
虚拟 boolendPrefixMapping(const QString &prefix) override
虚拟 boolerror(const QXmlParseException &exception) override
虚拟 QStringerrorString() const override
虚拟 boolexternalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) override
虚拟 boolfatalError(const QXmlParseException &exception) override
虚拟 boolignorableWhitespace(const QString &ch) override
虚拟 boolinternalEntityDecl(const QString &name, const QString &value) override
虚拟 boolnotationDecl(const QString &name, const QString &publicId, const QString &systemId) override
虚拟 boolprocessingInstruction(const QString &target, const QString &data) override
虚拟 boolresolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret) override
虚拟 voidsetDocumentLocator(QXmlLocator *locator) 覆盖
虚拟 boolskippedEntity(const QString &name) 覆盖
虚拟 boolstartCDATA() 覆盖
虚拟 boolstartDTD(const QString &name, const QString &publicId, const QString &systemId) 覆盖
虚拟 boolstartDocument() 覆盖
虚拟 boolstartElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) 覆盖
虚拟 boolstartEntity(const QString &name) 覆盖
虚拟 boolstartPrefixMapping(const QString &prefix, const QString &uri) 覆盖
虚拟 boolunparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName) 覆盖
虚拟 boolwarning(const QXmlParseException &exception) 覆盖

详细描述

此类汇集了专门处理器类的功能,使其成为实现自定义处理器(对于QXmlReader的子类,尤其是QXmlSimpleReader)的一个便捷起点。在此类中对所有基类中的虚拟函数进行了重新实现,为许多常见情况提供了合理的默认行为。通过继承此类并覆盖这些函数,你可以将重点放在实现与你的应用程序相关的处理器部分。

必须告诉XML读取器在解析过程中对不同类型的事件使用哪个处理器。这意味着虽然QXmlDefaultHandler为继承自所有基类的函数提供了默认实现,但我们仍然可以使用针对特定事件类型的专用处理器。

例如,QXmlDefaultHandler类同时继承自QXmlContentHandlerQXmlErrorHandler,所以通过继承它我们可以为以下两个读取函数使用相同的处理器

    xmlReader.setContentHandler(handler);
    xmlReader.setErrorHandler(handler);

由于读取器将通知处理程序解析错误,因此在错误出现时需要重写QXmlErrorHandler::fatalError(),例如,如果我们希望在出现此类错误时停止解析

bool Handler::fatalError (const QXmlParseException & exception)
{
    qWarning() << "Fatal error on line" << exception.lineNumber()
               << ", column" << exception.columnNumber() << ':'
               << exception.message();

    return false;
}

上述函数返回false,这告诉读取器停止解析。要继续使用相同的读取器,需要创建一个新的处理程序实例,并按照上述方式设置读取器以使用它。

检查QXmlDefaultHandler继承的一些函数是非常有用的,并考虑为什么它们可能在自定义处理程序中重新实现。自定义处理程序通常会重写QXmlContentHandler::startDocument()以准备处理程序为新内容。通过重写QXmlContentHandler::startElement()、QXmlContentHandler::endElement()和QXmlContentHandler::characters()可以处理文档元素及其内的文本。您可能想重写QXmlContentHandler::endDocument(),以在完整读取文档后执行一些最终的或验证操作。

另见QXmlDTDHandlerQXmlDeclHandlerQXmlContentHandlerQXmlEntityResolverQXmlErrorHandlerQXmlLexicalHandler

成员函数文档

QXmlDefaultHandler::QXmlDefaultHandler()

构造一个用于与QXmlReader的子类一起使用的处理器。

[虚拟非抛出异常] QXmlDefaultHandler::~QXmlDefaultHandler()

销毁处理器。

[重写虚函数] bool QXmlDefaultHandler::attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value)

重新实现了: QXmlDeclHandler::attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value).

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::characters(const QString &ch)

重新实现了: QXmlContentHandler::characters(const QString &ch).

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::comment(const QString &ch)

重新实现了: QXmlLexicalHandler::comment(const QString &ch).

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endCDATA()

重新实现了: QXmlLexicalHandler::endCDATA().

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endDTD()

重新实现了: QXmlLexicalHandler::endDTD().

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endDocument()

重新实现了: QXmlContentHandler::endDocument().

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)

重新实现了: QXmlContentHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName).

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endEntity(const QString &name)

重新实现了: QXmlLexicalHandler::endEntity(const QString &name).

此重写实现不做任何操作。

[重写虚函数] bool QXmlDefaultHandler::endPrefixMapping(const QString &prefix)

重新实现了: QXmlContentHandler::endPrefixMapping(const QString &prefix).

此重写实现不做任何操作。

[重写虚函数] QXmlParseException & QXmlDefaultHandler::error(const QXmlParseException &exception)

重新实现了: QXmlErrorHandler::error(const QXmlParseException &exception).

此重写实现不做任何操作。

[重写虚函数] QString QXmlDefaultHandler::errorString() const

重新实现:QXmlContentHandler::errorString() const.

返回默认错误字符串。

[覆盖虚函数] bool QXmlDefaultHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId)

重新实现:QXmlDeclHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::fatalError(const QXmlParseException &exception)

重新实现:QXmlErrorHandler::fatalError(const QXmlParseException &exception).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::ignorableWhitespace(const QString &ch)

重新实现:QXmlContentHandler::ignorableWhitespace(const QString &ch).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::internalEntityDecl(const QString &name, const QString &value)

重新实现:QXmlDeclHandler::internalEntityDecl(const QString &name, const QString &value).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::notationDecl(const QString &name, const QString &publicId, const QString &systemId)

重新实现:QXmlDTDHandler::notationDecl(const QString &name, const QString &publicId, const QString &systemId).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::processingInstruction(const QString &target, const QString &data)

重新实现:QXmlContentHandler::processingInstruction(const QString &target, const QString &data).

此重写实现不做任何操作。

[覆盖虚函数] bool QXmlDefaultHandler::resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret)

重新实现:QXmlEntityResolver::resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret).

ret 设置为 nullptr,以便读取器使用在 XML 文档中提供的系统标识符。

[覆盖虚函数] void QXmlDefaultHandler::setDocumentLocator(QXmlLocator *locator)

重新实现:QXmlContentHandler::setDocumentLocator(QXmlLocator *locator).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::skippedEntity(const QString &name)

重实现于: QXmlContentHandler::skippedEntity(const QString &name).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startCDATA()

重实现于: QXmlLexicalHandler::startCDATA().

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId)

重实现于: QXmlLexicalHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startDocument()

重实现于: QXmlContentHandler::startDocument().

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)

重实现于: QXmlContentHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startEntity(const QString &name)

重实现于: QXmlLexicalHandler::startEntity(const QString &name).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::startPrefixMapping(const QString &prefix, const QString &uri)

重实现于: QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName)

重实现于: QXmlDTDHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName).

此重写实现不做任何操作。

[[重写虚函数]] bool QXmlDefaultHandler::warning(const QXmlParseException &exception)

重实现于: QXmlErrorHandler::warning(const QXmlParseException &exception).

此重写实现不做任何操作。

© 2024 Qt公司有限公司。本文件中包含的文档贡献均为相应所有者的版权。本文件中提供的文档根据自由软件基金会发布的GNU自由文档许可协议版本1.3许可使用。GNU自由文档许可协议版本1.3