QXmlStreamReader 类
QXmlStreamReader 类提供了一个快速的解析器,用于通过简单的流式 API 读取格式良好的 XML。 更多...
头文件 | #include <QXmlStreamReader> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 包括继承成员在内的所有成员列表
- QXmlStreamReader 是 XML 类的一部分。
注意:此类中所有函数都是可重入的。
公开类型
枚举 | Error { NoError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, UnexpectedElementError } |
枚举 | ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements } |
枚举 | TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, …, ProcessingInstruction } |
属性
- namespaceProcessing : bool
公开函数
QXmlStreamReader() | |
QXmlStreamReader(QIODevice *device) | |
QXmlStreamReader(const QByteArray &data) | |
QXmlStreamReader(QAnyStringView data) | |
~QXmlStreamReader() | |
void | addData(QAnyStringView data) |
void | addData(const QByteArray &data) |
void | addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration) |
void | addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations) |
bool | atEnd() const |
QXmlStreamAttributes | attributes() const |
qint64 | characterOffset() const |
void | clear() |
qint64 | columnNumber() const |
QIODevice * | device() const |
QStringView | documentEncoding() const |
QStringView | documentVersion() const |
QStringView | dtdName() const |
QStringView | dtdPublicId() const |
QStringView | dtdSystemId() const |
QXmlStreamEntityDeclarations | entityDeclarations() const |
int | entityExpansionLimit() const |
QXmlStreamEntityResolver * | entityResolver() const |
QXmlStreamReader::Error | 错误() const |
QString | 错误字符串() const |
bool | hasError() const |
(自6.6起) bool | hasStandaloneDeclaration() const |
bool | isCDATA() const |
bool | isCharacters() const |
bool | isComment() const |
bool | isDTD() const |
bool | isEndDocument() const |
bool | isEndElement() const |
bool | isEntityReference() const |
bool | isProcessingInstruction() const |
bool | isStandaloneDocument() const |
bool | isStartDocument() const |
bool | isStartElement() const |
bool | isWhitespace() const |
qint64 | lineNumber() const |
QStringView | name() const |
QXmlStreamNamespaceDeclarations | namespaceDeclarations() const |
bool | namespaceProcessing() const |
QStringView | namespaceUri() const |
QXmlStreamNotationDeclarations | notationDeclarations() const |
QStringView | prefix() const |
QStringView | processingInstructionData() const |
QStringView | processingInstructionTarget() const |
QStringView | qualifiedName() const |
void | raiseError(const QString &message = QString()) |
QString | readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement) |
QXmlStreamReader::TokenType | readNext() |
bool | readNextStartElement() |
void | setDevice(QIODevice *device) |
void | setEntityExpansionLimit(int limit) |
void | setEntityResolver(QXmlStreamEntityResolver *resolver) |
void | setNamespaceProcessing(bool) |
void | skipCurrentElement() |
QStringView | text() const |
QString | tokenString() const |
QXmlStreamReader::TokenType | tokenType() const |
详细说明
QXmlStreamReader提供了一种简单的流式API来解析格式良好的XML。它是首先将完整的XML加载到一个DOM树(参见QDomDocument)的一个替代方案。QXmlStreamReader可以从QIODevice(参见setDevice())读取数据,或从原始的QByteArray加载(参见addData())。
Qt为写入XML提供了QXmlStreamWriter。
文本读取器的基本概念是报告XML文档作为标记流的格式,类似于SAX。QXmlStreamReader与SAX之间的主要区别在于报告XML标记的方式。在使用SAX的情况下,应用程序必须提供处理程序(回调函数),这些处理程序在解析器的方便时接收所谓的XML 事件。在使用QXmlStreamReader的情况下,应用程序代码本身驱动循环并从读取器中依次提取标记,就像它需要它们一样。这是通过调用readNext()来完成的,读取器从这个输入流中读取,直到完成下一个标记,此时它会返回tokenType()().然后可以使用包括isStartElement()和text()在内的一系列方便的函数来检查标记,以获取有关已经读取的信息。这种拉取方法的优点是,可以构建递归下降解析器,这意味着您可以将XML解析代码轻松地分成不同的方法或类。这使得在解析XML时跟踪应用程序的自身状态变得容易。
使用QXmlStreamReader的一个典型循环如下所示
QXmlStreamReader xml; ... while (!xml.atEnd()) { xml.readNext(); ... // do processing } if (xml.hasError()) { ... // do error handling }
QXmlStreamReader是一个符合XML 1.0规范的解析器,它不包含外部解析实体。只要没有错误发生,应用程序代码可以确信,
- 由流读取器提供的数据满足W3C对符合规范XML的准则,
- 标记提供在一个有效的顺序中。
除非QXmlStreamReader引发错误,否则它保证以下内容
- 所有标签都是嵌套和正确关闭的。
- 对内部实体的引用已替换为正确的替换文本。
- 根据DTD的内部分集对属性进行了归一化或添加。
- 类型为StartDocument的标记发生在所有其他标记之前,除了注释和进程指令之外。
- 最多有一个DOCTYPE元素(类型为DTD的标记)存在。
- 如果有,DOCTYPE元素出现在所有其他元素之前,除了StartDocument、注释和进程指令。
特别是,一旦看到任何类型为StartElement、EndElement、Characters、EntityReference或EndDocument的标记,就不会再看到类型为StartDocument或DTD的标记。如果在输入流中存在顺序错误的标记,则会引发错误。
注意: 标记类型Comment和ProcessingInstruction可以出现在流的任何位置。
如果在解析过程中发生错误,atEnd()和hasError()返回true,并且error()返回出现的错误。函数errorString()、lineNumber()、columnNumber()和characterOffset()用于构造适当的错误或警告信息。为了简化应用程序代码,QXmlStreamReader包含一个raiseError()机制,允许您引发自定义错误,这将触发上述所述的错误处理。
QXmlStream Bookmarks Example演示了如何使用递归下降技术使用流读取器读取XML书签文件(XBEL)。
命名空间
QXmlStream可以理解和解析XML命名空间。例如,在StartElement的情况下,namespaceUri()返回元素的命名空间,而name()返回元素的本地名称。命名空间URI和名称的组合唯一地标识一个元素。如果被解析器解析的XML实体中没有声明命名空间前缀,那么namespaceUri是空的。
如果您解析符合XML规范的XML数据,这些数据不使用命名空间,或不使用命名空间,可以使用元素的qualifiedName()来代替。一个限定名是元素的prefix()后跟冒号,然后是元素的本地名称——正好就像元素在原始XML数据中出现的样。由于命名空间URI映射到前缀既不是唯一的,也不是通用的,对于那些符合命名空间规范的XML数据,应避免使用qualifiedName()。
为了解析使用未声明的命名空间前缀的独立文档,您可以关闭命名空间处理功能,即使用namespaceProcessing属性。
增量解析
QXmlStreamReader是一个增量解析器。它可以处理文档不能一次性解析的情况,因为这些数据是分块到达的(例如,来自多个文件或通过网络连接)。当读取器在完整解析文档之前的任何时刻耗尽了数据,它会报告一个PrematureEndOfDocumentError错误。当有更多数据到来时,无论是通过调用addData(),还是因为通过网络device()可用的更多数据,读取器会从PrematureEndOfDocumentError错误中恢复过来,并在下一次调用readNext()时继续解析新数据。
例如,如果您使用网络访问管理器QNetworkAccessManager从网络读取数据,您会对管理器进行网络请求,并收到网络响应。因为QNetworkReply是一个QIODevice,您会把它的readyRead()信号连接到一个自定义槽,例如在QNetworkAccessManager的讨论中展示的代码片段中的slotReadyRead()
。在这个槽中,您使用readAll()读取所有可用数据,并使用addData()将其传递给XML流读取器。然后您调用您自定义的解析函数,它从读取器中读取XML事件。
性能和内存消耗
QXmlStreamReader在设计中就注重节省内存,因为它不会将整个XML文档树存储在内存中,而只存储报告时的当前标记。此外,QXmlStreamReader避免了通常映射XML文档到便于使用的Qt API所需的许多小的字符串分配。它是通过将所有字符串数据报告为QStringView而不是真正的QString对象来实现的。在这些对象上调用toString()会返回等效的真实QString对象。
成员类型文档
enum QXmlStreamReader::Error
这个枚举指定了不同的错误情况
常量 | 值 | 描述 |
---|---|---|
QXmlStreamReader::NoError | 0 | 没有发生错误。 |
QXmlStreamReader::CustomError | 2 | 使用raiseError()抛出了一个自定义错误 |
QXmlStreamReader::NotWellFormedError | 3 | 解析器由于读取的XML不是良好格式,从而内部抛出了错误。 |
QXmlStreamReader::PrematureEndOfDocumentError | 4 | 在解析良好格式的XML文档之前,输入流已经结束。如果流入更多XML数据,可以通过调用addData()或等待它通过device()到达,从该错误中恢复。 |
QXmlStreamReader::UnexpectedElementError | 1 | 解析器遇到一个与预期不同的元素或标记。 |
enum QXmlStreamReader::ReadElementTextBehaviour
此枚举指定了readElementText()的不同行为。
常量 | 值 | 描述 |
---|---|---|
QXmlStreamReader::ErrorOnUnexpectedElement | 0 | 当遇到子元素时,抛出一个UnexpectedElementError并返回迄今为止读取的内容。 |
QXmlStreamReader::IncludeChildElements | 1 | 递归包含子元素的文本。 |
QXmlStreamReader::SkipChildElements | 2 | 跳过子元素。 |
enum QXmlStreamReader::TokenType
此枚举指定了读取器刚刚读取的标记类型。
常量 | 值 | 描述 |
---|---|---|
QXmlStreamReader::NoToken | 0 | 读取器尚未读取内容。 |
QXmlStreamReader::Invalid | 1 | 发生错误,在error()和errorString()中报告。 |
QXmlStreamReader::StartDocument | 2 | 读取器在documentVersion()中报告XML版本号,以及在XML文档中指定的编码documentEncoding()。如果文档声明为独立,isStandaloneDocument()返回true ;否则返回false 。 |
QXmlStreamReader::EndDocument | 3 | 读取器报告文档的结束。 |
QXmlStreamReader::StartElement | 4 | 读取器报告元素的开始,其中包含namespaceUri()和name()。空元素也报告为StartElement,直接由EndElement跟随。可以通过调用便利函数readElementText()来连接直到相应EndElement的所有内容。属性在attributes()中报告,命名空间声明在namespaceDeclarations()中。 |
QXmlStreamReader::EndElement | 5 | 读取器报告元素的结束,其中包含namespaceUri()和name()。 |
QXmlStreamReader::Characters | 6 | 读取器在text()中报告字符。如果所有字符都是空白字符,isWhitespace()返回true 。如果字符来自CDATA部分,isCDATA()返回true 。 |
QXmlStreamReader::Comment | 7 | 读取器在text()中报告注释。 |
QXmlStreamReader::DTD | 8 | 读取器在text()中报告DTD,符号声明在notationDeclarations()中,实体声明在entityDeclarations()中。DTD声明的详细信息在dtdName(),dtdPublicId()和dtdSystemId()中报告。 |
QXmlStreamReader::EntityReference | 9 | 读者报告了一个无法解析的实体引用。引用的名称在name()中报告,替换文本在text()中。 |
QXmlStreamReader::ProcessingInstruction | 10 | 阅读器在processingInstructionTarget()和processingInstructionData()中报告了一个处理指令。 |
属性文档
命名空间处理:bool
此属性包含流阅读器的命名空间处理标志。
此属性控制流阅读器是否处理命名空间。如果启用,则阅读器会处理命名空间,否则不会。
默认情况下,命名空间处理是启用的。
访问函数
bool | namespaceProcessing() const |
void | setNamespaceProcessing(bool) |
成员函数文档
QXmlStreamReader::QXmlStreamReader()
构建流阅读器。
[显式]
QXmlStreamReader::QXmlStreamReader(QIODevice *device)
创建一个新的流阅读器,从中读取设备。
[显式]
QXmlStreamReader::QXmlStreamReader(const QByteArray &data)
这是一个重载函数。
创建一个新的流阅读器,从中读取数据。
另请参阅addData()、clear和setDevice。
[显式]
QXmlStreamReader::QXmlStreamReader(QAnyStringView data)
创建一个新的流阅读器,从中读取数据。
注意:在Qt版本6.5之前的版本中,此构造函数为QString和const char*
重载。
另请参阅addData()、clear和setDevice。
[非异常抛出]
QXmlStreamReader::~QXmlStreamReader()
销毁阅读器。
void QXmlStreamReader::addData(QAnyStringView data)
为阅读器添加更多数据以供读取。如果阅读器有一个设备,则此函数不做任何事。
注意:在Qt版本6.5之前的版本中,此函数为QString和const char*
重载。
void QXmlStreamReader::addData(const QByteArray &data)
这是一个重载函数。
为阅读器添加更多数据以供读取。如果阅读器有一个设备,则此函数不做任何事。
void QXmlStreamReader::addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration)
添加一个额外的命名空间声明。该声明对当前元素的子元素有效,或者如果是函数在读取任何元素之前被调用,则对整个XML文档有效。
另请参阅 namespaceDeclarations()、addExtraNamespaceDeclarations() 和 setNamespaceProcessing()。
void QXmlStreamReader::addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations)
添加由 extraNamespaceDeclarations 指定的声明向量。
另请参阅 namespaceDeclarations() 和 addExtraNamespaceDeclaration()。
bool QXmlStreamReader::atEnd() const
如果读取器已读取到 XML 文档的末尾,或者发生错误并且读取已中止,则返回 true
。否则,它返回 false
。
当 atEnd() 和 hasError() 返回 true,且 error() 返回 PrematureEndOfDocumentError 时,这意味着 XML 到目前为止已正确形成,但没有完整解析到完整的 XML 文档。如果从 QByteArray 读取 XML,则可以使用 addData() 添加更多的 XML 数据块。如果从 QIODevice 读取 XML,则需要等待更多数据到达。无论如何,在可用更多数据时,atEnd() 會再次返回 false。
另请参阅 hasError()、error()、device() 和 QIODevice::atEnd。
QXmlStreamAttributes QXmlStreamReader::attributes() const
返回 StartElement 的属性。
qint64 QXmlStreamReader::characterOffset() const
返回当前的字符偏移量,从 0 开始。
另请参阅 lineNumber() 和 columnNumber()。
void QXmlStreamReader::clear()
从读取器中删除任何 device() 或数据,并将其内部状态重置到初始状态。
另请参阅 addData()。
qint64 QXmlStreamReader::columnNumber() const
返回当前列号,从 0 开始。
另请参阅 lineNumber() 和 characterOffset()。
QIODevice *QXmlStreamReader::device() const
返回与 QXmlStreamReader 关联的当前设备,如果没有分配设备,则返回 nullptr
。
另请参阅 setDevice()。
QStringView QXmlStreamReader::documentEncoding() const
如果tokenType()为StartDocument,则该函数返回XML声明中指定的编码字符串。否则返回空字符串。
QStringView QXmlStreamReader::documentVersion() const
如果tokenType()为StartDocument,则该函数返回XML声明中指定的版本字符串。否则返回空字符串。
QStringView QXmlStreamReader::dtdName() const
如果tokenType()为DTD,则该函数返回DTD的名称。否则返回空字符串。
QStringView QXmlStreamReader::dtdPublicId() const
如果tokenType()为DTD,则该函数返回DTD的公共标识符。否则返回空字符串。
QStringView QXmlStreamReader::dtdSystemId() const
如果tokenType()为DTD,则该函数返回DTD的系统标识符。否则返回空字符串。
QXmlStreamEntityDeclarations QXmlStreamReader::entityDeclarations() const
如果tokenType()为DTD,则该函数返回DTD的未解析(外部)实体声明。否则返回空向量。
QXmlStreamEntityDeclarations类被定义为QList中QXmlStreamEntityDeclaration的集合。
int QXmlStreamReader::entityExpansionLimit() const
返回单个实体允许扩展的最大字符数。如果一个实体扩展超过了给定的限制,则文档被认为不是良好的格式。
QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const
返回实体解析器,如果没有实体解析器,则返回nullptr
。
另请参阅setEntityResolver。
QXmlStreamReader::Error QXmlStreamReader::error() const
返回当前错误的类型,如果没有错误发生,则返回NoError。
另请参阅errorString()和raiseError。
QString QXmlStreamReader::errorString() const
返回通过raiseError设置的错误消息。
另请参阅error、lineNumber、columnNumber和characterOffset。
bool QXmlStreamReader::hasError() const
如果发生错误,则返回 true
,否则返回 false
。
另请参阅errorString() 和 error()。
[自 6.6 版起]
bool QXmlStreamReader::hasStandaloneDeclaration() const
如果此文档有显式的独立声明(可以是 'yes' 或 'no'),则返回 true
;否则返回 false
;
如果没有解析 XML 声明,此函数返回 false
。
该功能自 Qt 6.6 版开始引入。
另请参阅isStandaloneDocument()。
bool QXmlStreamReader::isCDATA() const
如果读取器报告来自 CDATA 部分的字符,则返回 true
;否则返回 false
。
另请参阅isCharacters() 和 text()。
bool QXmlStreamReader::isCharacters() const
如果 tokenType() 等于 Characters,则返回 true
;否则返回 false
。
另请参阅isWhitespace() 和 isCDATA()。
bool QXmlStreamReader::isComment() const
如果 tokenType() 等于 Comment,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isDTD() const
如果 tokenType() 等于 DTD,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isEndDocument() const
如果 tokenType() 等于 EndDocument,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isEndElement() const
如果 tokenType() 等于 EndElement,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isEntityReference() const
如果 tokenType() 等于 EntityReference,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isProcessingInstruction() const
如果 tokenType() 等于 ProcessingInstruction,则返回 true
;否则返回 false
。
bool QXmlStreamReader::isStandaloneDocument() const
如果此文档在 XML 声明中已声明为独立,则返回 true
;否则返回 false
。
如果没有解析 XML 声明,此函数返回 false
。
bool QXmlStreamReader::isStartDocument() const
如果 tokenType() 等于 StartDocument,则返回 true
;否则返回 false
。
bool QXmlStreamReader>::isStartElement() const
如果 tokenType() 等于 StartElement,则返回 true
;否则返回 false
。
bool QXmlStreamReader>::isWhitespace() const
如果读取器报告的字符只包含空白字符,则返回 true
;否则返回 false
。
另请参阅isCharacters() 和 text()。
qint64 QXmlStreamReader>::lineNumber() const
返回当前行号,从1开始。
另请参阅columnNumber() 和 characterOffset。
QStringView QXmlStreamReader>::name() const
返回 StartElement、EndElement 或 EntityReference 的本地名称。
另请参阅namespaceUri() 和 qualifiedName。
QXmlStreamNamespaceDeclarations QXmlStreamReader>::namespaceDeclarations() const
如果 tokenType() 是 StartElement,则此函数返回元素的命名空间声明。否则返回一个空向量。
QXmlStreamNamespaceDeclarations 类定义为一个 QList,其中包含 QXmlStreamNamespaceDeclaration。
另请参阅addExtraNamespaceDeclaration() 和 addExtraNamespaceDeclarations。
QStringView QXmlStreamReader>::namespaceUri() const
返回 StartElement 或 EndElement 的 namespaceUri。
另请参阅name() 和 qualifiedName。
QXmlStreamNotationDeclarations QXmlStreamReader>::notationDeclarations() const
如果 tokenType() 是 DTD,则此函数返回 DTD 的 notation 声明。否则返回一个空向量。
QXmlStreamNotationDeclarations 类定义为一个 QList,其中包含 QXmlStreamNotationDeclaration。
QStringView QXmlStreamReader>::prefix() const
返回 StartElement 或 EndElement 的前缀。
另请参阅name() 和 qualifiedName。
QStringView QXmlStreamReader>::processingInstructionData() const
返回 ProcessingInstruction 的数据。
QStringView QXmlStreamReader::processingInstructionTarget() const
返回处理指令的目标。
QStringView QXmlStreamReader::qualifiedName() const
返回起始元素或结束元素的有效名称。
有效名称是XML数据中元素的原生名称。它由命名空间前缀、冒号以及元素的局部名称组成。由于命名空间前缀不是唯一的(相同的前缀可以指向不同的命名空间,不同的前缀可以指向相同的命名空间),你不应该使用qualifiedName(),而是使用已解析的namespaceUri()以及属性的局部name()。
另请参阅 name(),prefix()以及namespaceUri()。
void QXmlStreamReader::raiseError(const QString &message = QString())
引发带有可选错误消息的自定义错误。
另请参阅 error()和errorString()。
QString QXmlStreamReader::readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement)
这是一个便利函数,在读取到的元素为起始元素时调用。读取到对应的结束元素并返回两者之间的所有文本。如果没有错误,则调用此函数后的当前标记(见tokenType())是结束元素。
在读取到Characters或EntityReference标记时,此函数将text()拼接在一起,但会跳过ProcessingInstruction和Comment。如果当前标记不是StartElement,则返回空字符串。
behaviour定义在读取到EndElement之前读取到任何其他内容时会发生什么。函数可以包含子元素的文本(例如,对于HTML很有用),忽略子元素或引发UnexpectedElementError并返回迄今为止读取的内容(默认)。
QXmlStreamReader::TokenType QXmlStreamReader::readNext()
读取下一个标记并返回其类型。
除了一个例外,一旦readNext()报告了错误,就不可能继续读取XML流。然后atEnd()返回true
,hasError()返回true
,并且此函数返回QXmlStreamReader::Invalid。
异常出现在当error()()返回PrematureEndOfDocumentError时。此错误在遇到一个格式正确但不是完整XML文档的XML片段的末尾时报告。在这种情况下,可以通过调用addData()()来恢复解析,向流中添加下一个XML片段,或者等待更多数据到达,当流来自QByteArray或者从device()读取时。
另请参阅tokenType()和tokenString。
bool QXmlStreamReader::readNextStartElement()
读取直到当前元素内的下一个起始元素。当达到起始元素时返回true
。当遇到元素结束或发生错误时返回false。
当前元素是与最近解析的起始元素匹配的元素,但没有达到匹配的结束元素。当解析器达到结束元素时,当前元素变为父元素。
这是一个方便函数,当您只关心解析XML元素时使用。在QXmlStream Bookmarks示例中广泛使用了此函数。
另请参阅readNext。
void QXmlStreamReader::setDevice(QIODevice *device)
设置当前设备为device。设置设备会将流重置为其初始状态。
void QXmlStreamReader::setEntityExpansionLimit(int limit)
设置单个实体允许扩展的最大字符数为limit。如果一个实体超出给定限制,该文档将不被视为格式正确。
这个限制是为了防止在加载未知XML文档时遭受DoS攻击,因为递归实体扩展可能会导致耗尽所有可用内存。
此属性的默认值是4096个字符。
另请参阅entityExpansionLimit。
void QXmlStreamReader::setEntityResolver(QXmlStreamEntityResolver *resolver)
使resolver成为新的entityResolver。
流读取器不会获取解析器的所有权。确保解析器在整个流读取器对象的生命周期内有效,或者直到设置另一个解析器或nullptr
是调用者的责任。
另请参阅entityResolver。
void QXmlStreamReader::skipCurrentElement()
读取直到当前元素的末尾,跳过任何子节点。此函数对于跳过未知元素很有用。
当前元素是与最近解析的起始元素匹配的元素,但没有达到匹配的结束元素。当解析器达到结束元素时,当前元素变为父元素。
QStringView QXmlStreamReader::text() const
返回Characters、Comment、DTD或EntityReference的文本。
QString QXmlStreamReader::tokenString() const
返回当前标记的字符串表示。
参见tokenType。
QXmlStreamReader::TokenType QXmlStreamReader::tokenType() const
返回当前标记的类型。
您还可以使用以下便利函数查询当前标记:isStartDocument(),isEndDocument(),isStartElement(),isEndElement(),isCharacters(),isComment(),isDTD(),isEntityReference(),以及 isProcessingInstruction()。
参见tokenString。
© 2024 The Qt Company Ltd. 本文档的贡献属于其各自的版权所有。提供的文档受 GNU自由文档许可证1.3版本 的条款约束,由自由软件基金会发布。Qt及其相应的标志是芬兰以及其他国家/地区的The Qt Company Ltd.的商标。所有其他商标都是其各自所有者的财产。