QXmlLexicalHandler Class
QXmlLexicalHandler 类提供了一个接口,用于报告 XML 数据的词法内容。更多内容...
| 头文件: | #include <QXmlLexicalHandler> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
| 由以下功能继承: |
注意:该类中的所有函数均为可重入函数。
公共函数
| 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 、QXmlEntityResolver 以及QXmlErrorHandler 。
成员函数文档
[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 声明的结束(如有)。
如果该函数返回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 声明的开始(如有)。它将文档类型的名称报告在 `name` 中,公共标识符报告在 `publicId ` 中,系统标识符报告在 `systemId` 中。
如果缺少公共标识符,则将publicId 设置为空字符串。如果缺少系统标识符,则将systemId 设置为空字符串。请注意,存在公共标识符但没有系统标识符的 XML 是不合法的;在这种情况下会发生解析错误。
通过QXmlDTDHandler 或QXmlDeclHandler 报告的所有声明都应出现在 startDTD() 和endDTD() 调用之间。
如果该函数返回false ,解析器将停止解析并报告错误。解析器使用errorString() 函数获取错误消息。
另请参阅 endDTD()。
[pure virtual] bool QXmlLexicalHandler::startEntity(const QString &name)
读取器调用此函数来报告名为name 的实体的开始。
请注意,如果该实体未知,解析器将通过 `QXmlContentHandler::skippedEntity()` 报告该情况,而不是通过此函数。
如果此函数返回 `false `,解析器将停止解析并报告错误。解析器使用函数 `errorString()` 来获取错误消息。
另请参阅 endEntity() 和QXmlSimpleReader::setFeature()。
© 2026 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.