QXmlReader Class
QXmlReader 类为 XML 读取器(即解析器)提供了一个接口。更多内容...
| 标题: | #include <QXmlReader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
| 由以下对象继承: |
注意:本类中的所有函数均为可重入函数。
公共函数
| virtual | ~QXmlReader() |
| virtual QXmlDTDHandler * | DTDHandler() const = 0 |
| virtual QXmlContentHandler * | contentHandler() const = 0 |
| virtual QXmlDeclHandler * | declHandler() const = 0 |
| virtual QXmlEntityResolver * | entityResolver() const = 0 |
| virtual QXmlErrorHandler * | errorHandler() const = 0 |
| virtual bool | feature(const QString &name, bool *ok = nullptr) const = 0 |
| virtual bool | hasFeature(const QString &name) const = 0 |
| virtual bool | hasProperty(const QString &name) const = 0 |
| virtual QXmlLexicalHandler * | lexicalHandler() const = 0 |
| virtual bool | parse(const QXmlInputSource *input) = 0 |
| virtual void * | property(const QString &name, bool *ok = nullptr) const = 0 |
| virtual void | setContentHandler(QXmlContentHandler *handler) = 0 |
| virtual void | setDTDHandler(QXmlDTDHandler *handler) = 0 |
| virtual void | setDeclHandler(QXmlDeclHandler *handler) = 0 |
| virtual void | setEntityResolver(QXmlEntityResolver *handler) = 0 |
| virtual void | setErrorHandler(QXmlErrorHandler *handler) = 0 |
| virtual void | setFeature(const QString &name, bool value) = 0 |
| virtual void | setLexicalHandler(QXmlLexicalHandler *handler) = 0 |
| virtual void | setProperty(const QString &name, void *value) = 0 |
详细说明
这个抽象类为 Qt 中的所有 XML 读取器提供了一个接口。目前,Qt XML 模块中只包含一个读取器的实现:QXmlSimpleReader 。在未来的版本中,可能会提供更多具有不同属性的读取器(例如,一个具有验证功能的解析器)。
XML 类的设计遵循SAX2 Java 接口,名称已根据 Qt 命名约定进行调整。对于任何使用过 SAX2 的人来说,入门Qt XML 类应该非常容易。
所有读取器均使用QXmlInputSource 类来读取输入文档。由于您通常关注 XML 文档中的特定内容,因此读取器会通过特殊的处理程序类(QXmlDTDHandler 、QXmlDeclHandler 、QXmlContentHandler 、QXmlEntityResolver 、QXmlErrorHandler 和QXmlLexicalHandler )报告内容;若要处理这些内容,您必须继承这些类。
由于处理程序类仅描述接口,因此您必须实现所有函数。我们提供了QXmlDefaultHandler 类以简化这一过程:它为所有函数实现了默认行为(不执行任何操作),因此您可以继承该类,并仅实现您感兴趣的函数。
读取器的特性和属性可分别通过setFeature() 和setProperty() 进行设置。您可以通过setEntityResolver()、setDTDHandler()、setContentHandler()、setErrorHandler()、setLexicalHandler() 和setDeclHandler() 将读取器配置为使用您自己的子类。解析过程本身通过调用parse() 启动。
请注意,该类现已弃用,请使用QXmlStreamReader 或 QDomDocument 来读取 XML 文件。
另请参阅 QXmlSimpleReader 。
成员函数文档
[virtual noexcept] QXmlReader::~QXmlReader()
摧毁了读者。
[pure virtual] QXmlDTDHandler *QXmlReader::DTDHandler() const
返回 DTD 处理程序;如果未设置任何处理程序,则返回nullptr 。
另请参阅 setDTDHandler()。
[pure virtual] QXmlContentHandler *QXmlReader::contentHandler() const
返回内容处理程序;如果未设置内容处理程序,则返回nullptr 。
另请参阅 setContentHandler()。
[pure virtual] QXmlDeclHandler *QXmlReader::declHandler() const
返回声明处理程序;如果未设置任何声明处理程序,则返回nullptr 。
另请参阅 setDeclHandler()。
[pure virtual] QXmlEntityResolver *QXmlReader::entityResolver() const
返回实体解析器;若未设置,则返回nullptr 。
另请参阅 setEntityResolver()。
[pure virtual] QXmlErrorHandler *QXmlReader::errorHandler() const
返回错误处理程序;若未设置,则返回nullptr 。
另请参阅 setErrorHandler()。
[pure virtual] bool QXmlReader::feature(const QString &name, bool *ok = nullptr) const
如果阅读器具有名为name 的特性,则返回该特性的值。如果不存在此特性,则返回值未定义。
如果 `ok ` 不为 `nullptr`:*ok 则当读取器具有名为 `name` 的特性时,该值被设置为 true;否则,*ok 该值被设置为 false。
另请参阅 setFeature() 和hasFeature()。
[pure virtual] bool QXmlReader::hasFeature(const QString &name) const
如果读取器具有名为name 的功能,则返回true ;否则返回false 。
另请参阅 feature() 和setFeature()。
[pure virtual] bool QXmlReader::hasProperty(const QString &name) const
如果读取器具有属性name ,则返回true ;否则返回false 。
另请参阅 property() 和setProperty()。
[pure virtual] QXmlLexicalHandler *QXmlReader::lexicalHandler() const
返回词法处理程序;若未设置,则返回nullptr 。
另请参阅 setLexicalHandler()。
[pure virtual] bool QXmlReader::parse(const QXmlInputSource *input)
从input 读取一个XML文档并对其进行解析。如果解析成功,则返回true ;否则返回false 。
[pure virtual] void *QXmlReader::property(const QString &name, bool *ok = nullptr) const
如果读取器具有属性name ,则该函数返回该属性的值;否则,返回值未定义。
如果ok 不是nullptr :如果读取器具有name 属性* ,则ok 被设置为 true;否则*ok 被设置为 false。
另请参阅 setProperty() 和hasProperty()。
[pure virtual] void QXmlReader::setContentHandler(QXmlContentHandler *handler)
将内容处理程序设置为handler 。
另请参阅 contentHandler()。
[pure virtual] void QXmlReader::setDTDHandler(QXmlDTDHandler *handler)
将 DTD 处理程序设置为handler 。
另请参阅 DTDHandler()。
[pure virtual] void QXmlReader::setDeclHandler(QXmlDeclHandler *handler)
将声明处理程序设置为handler 。
另请参阅 declHandler()。
[pure virtual] void QXmlReader::setEntityResolver(QXmlEntityResolver *handler)
将实体解析器设置为handler 。
另请参阅 entityResolver()。
[pure virtual] void QXmlReader::setErrorHandler(QXmlErrorHandler *handler)
将错误处理程序设置为handler 。如果handler 为 0,则清除错误处理程序。
另请参阅 errorHandler()。
[pure virtual] void QXmlReader::setFeature(const QString &name, bool value)
将名为“name ”的功能设置为给定的“value ”。如果阅读器不支持该功能,则不执行任何操作。
另请参阅 feature() 和hasFeature()。
[pure virtual] void QXmlReader::setLexicalHandler(QXmlLexicalHandler *handler)
将词法处理程序设置为handler 。
另请参阅 lexicalHandler()。
[pure virtual] void QXmlReader::setProperty(const QString &name, void *value)
将属性name 设置为value 。如果读取器不具备该属性,则不会发生任何操作。
另请参阅 property() 和hasProperty()。
© 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.