QXmlLexicalHandler Class

QXmlLexicalHandler 类为报告 XML 数据的词法内容提供了一个接口。更多

Header: #include <QXmlLexicalHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat
继承于

QXmlDefaultHandler

注意:该类中的所有函数都是可重入的

公共函数

virtual ~QXmlLexicalHandler()
virtual bool comment(const QString &ch) = 0
virtual bool endCDATA() = 0
virtual bool endDTD() = 0
virtual bool endEntity(const QString &name) = 0
virtual QString errorString() const = 0
virtual bool startCDATA() = 0
virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId) = 0
virtual bool startEntity(const QString &name) = 0

详细说明

词法处理程序中的事件适用于整个文档,而不仅仅是文档元素,所有词法处理程序事件都会出现在内容处理程序的 startDocument 和 endDocument 事件之间。

您可以使用QXmlReader::setLexicalHandler() 设置词法处理程序。

该接口的设计基于 SAX2 扩展 LexicalHandler。

该接口提供startDTD(),endDTD(),startEntity(),endEntity(),startCDATA(),endCDATA() 和comment() 函数。

另请参见 QXmlDTDHandler,QXmlDeclHandler,QXmlContentHandler,QXmlEntityResolverQXmlErrorHandler

成员函数文档

[virtual noexcept] QXmlLexicalHandler::~QXmlLexicalHandler()

销毁词法处理程序。

[pure virtual] bool QXmlLexicalHandler::comment(const QString &ch)

阅读器调用该函数来报告文档中任何地方的 XML 注释。它以ch 的形式报告注释文本。

如果该函数返回false ,阅读器就会停止解析并报告错误。阅读器使用函数errorString() 获取错误信息。

[pure virtual] bool QXmlLexicalHandler::endCDATA()

阅读器调用该函数来报告 CDATA 部分的结束。

如果该函数返回false ,阅读器将停止解析并报告错误。阅读器使用函数errorString() 获取错误信息。

另请参阅 startCDATA() 和QXmlContentHandler::characters()。

[pure virtual] bool QXmlLexicalHandler::endDTD()

如果有 DTD 声明,阅读器会调用该函数来报告 DTD 声明的结束。

如果该函数返回false ,阅读器将停止解析并报告错误。阅读器使用函数errorString() 获取错误信息。

另请参阅 startDTD()。

[pure virtual] bool QXmlLexicalHandler::endEntity(const QString &name)

读者调用该函数来报告一个名为name 的实体的结束。

每次调用startEntity() 时,都会相应地调用 endEntity()。对startEntity() 和 endEntity() 的调用是正确嵌套的。

如果该函数返回false ,阅读器就会停止解析并报错。阅读器使用函数errorString() 获取错误信息。

另请参见 startEntity()、QXmlContentHandler::skippedEntity() 和QXmlSimpleReader::setFeature()。

[pure virtual] QString QXmlLexicalHandler::errorString() const

如果有处理函数返回false ,阅读器会调用该函数获取错误字符串。

[pure virtual] bool QXmlLexicalHandler::startCDATA()

阅读器调用该函数来报告 CDATA 部分的开始。CDATA 部分的内容通过QXmlContentHandler::characters() 函数报告。该函数仅用于报告边界。

如果该函数返回false ,阅读器将停止解析并报告错误。阅读器使用函数errorString() 获取错误信息。

另请参阅 endCDATA()。

[pure virtual] bool QXmlLexicalHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId)

如果有 DTD 声明,阅读器会调用该函数来报告 DTD 声明的开始。它在name 中报告文档类型的名称,在publicId 中报告公共标识符,在systemId 中报告系统标识符。

如果缺少公共标识符,publicId 将设置为空字符串。如果缺少系统标识符,systemId 将设为空字符串。请注意,有公共标识符而无系统标识符的 XML 是无效的;在这种情况下会出现解析错误。

所有通过QXmlDTDHandlerQXmlDeclHandler 报告的声明都出现在 startDTD() 和endDTD() 调用之间。

如果该函数返回false ,阅读器将停止解析并报错。阅读器使用函数errorString() 获取错误信息。

另请参见 endDTD()。

[pure virtual] bool QXmlLexicalHandler::startEntity(const QString &name)

读者调用该函数来报告一个名为name 的实体的开始。

请注意,如果实体未知,阅读器会通过QXmlContentHandler::skippedEntity() 而不是此函数报告。

如果该函数返回false ,阅读器将停止解析并报告错误。阅读器使用函数errorString() 获取错误信息。

另请参阅 endEntity() 和QXmlSimpleReader::setFeature()。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.