QXmlDefaultHandler 类
QXmlDefaultHandler 类提供了所有 XML 处理器类的默认实现。 更多...
头文件 | #include <QXmlDefaultHandler> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake | QT += core5compat |
继承自 | QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, 和 QXmlDeclHandler |
注意: 此类中的所有函数均是 可重入的。
公共函数
重写的公共函数
虚拟 bool | attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value) override |
虚拟 bool | characters(const QString &ch) override |
虚拟 bool | comment(const QString &ch) override |
虚拟 bool | endCDATA() override |
虚拟 bool | endDTD() override |
虚拟 bool | endDocument() override |
虚拟 bool | endElement(const QString &namespaceURI, const QString &">localName, const QString &qName) override |
虚拟 bool | endEntity(const QString &name) override |
虚拟 bool | endPrefixMapping(const QString &prefix) override |
虚拟 bool | error(const QXmlParseException &exception) override |
虚拟 QString | errorString() const override |
虚拟 bool | externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) override |
虚拟 bool | fatalError(const QXmlParseException &exception) override |
虚拟 bool | ignorableWhitespace(const QString &ch) override |
虚拟 bool | internalEntityDecl(const QString &name, const QString &value) override |
虚拟 bool | notationDecl(const QString &name, const QString &publicId, const QString &systemId) override |
虚拟 bool | processingInstruction(const QString &target, const QString &data) override |
虚拟 bool | resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret) override |
虚拟 void | setDocumentLocator(QXmlLocator *locator) 覆盖 |
虚拟 bool | skippedEntity(const QString &name) 覆盖 |
虚拟 bool | startCDATA() 覆盖 |
虚拟 bool | startDTD(const QString &name, const QString &publicId, const QString &systemId) 覆盖 |
虚拟 bool | startDocument() 覆盖 |
虚拟 bool | startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) 覆盖 |
虚拟 bool | startEntity(const QString &name) 覆盖 |
虚拟 bool | startPrefixMapping(const QString &prefix, const QString &uri) 覆盖 |
虚拟 bool | unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName) 覆盖 |
虚拟 bool | warning(const QXmlParseException &exception) 覆盖 |
详细描述
此类汇集了专门处理器类的功能,使其成为实现自定义处理器(对于QXmlReader的子类,尤其是QXmlSimpleReader)的一个便捷起点。在此类中对所有基类中的虚拟函数进行了重新实现,为许多常见情况提供了合理的默认行为。通过继承此类并覆盖这些函数,你可以将重点放在实现与你的应用程序相关的处理器部分。
必须告诉XML读取器在解析过程中对不同类型的事件使用哪个处理器。这意味着虽然QXmlDefaultHandler为继承自所有基类的函数提供了默认实现,但我们仍然可以使用针对特定事件类型的专用处理器。
例如,QXmlDefaultHandler类同时继承自QXmlContentHandler和QXmlErrorHandler,所以通过继承它我们可以为以下两个读取函数使用相同的处理器
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(),以在完整读取文档后执行一些最终的或验证操作。
另见QXmlDTDHandler、QXmlDeclHandler、QXmlContentHandler、QXmlEntityResolver、QXmlErrorHandler和QXmlLexicalHandler。
成员函数文档
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 ¬ationName)
重实现于: QXmlDTDHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName).
此重写实现不做任何操作。
[[重写虚函数]]
bool QXmlDefaultHandler::warning(const QXmlParseException &exception)
重实现于: QXmlErrorHandler::warning(const QXmlParseException &exception).
此重写实现不做任何操作。
© 2024 Qt公司有限公司。本文件中包含的文档贡献均为相应所有者的版权。本文件中提供的文档根据自由软件基金会发布的GNU自由文档许可协议版本1.3许可使用。GNU自由文档许可协议版本1.3。