QXmlInputSource 类

该 QXmlInputSource 类为 QXmlReader 子类提供了输入数据。 更多...

头文件 #include <QXmlInputSource>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmakeQT += core5compat

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

公共函数

QXmlInputSource()
QXmlInputSource(QIODevice *dev)
虚拟~QXmlInputSource()
虚拟 QStringdata() const
虚拟 voidfetchData()
虚拟 QCharnext()
虚拟 voidreset()
虚拟 voidsetData(const QString &dat)
虚拟 voidsetData(const QByteArray &dat)

保护函数

虚拟 QStringfromRawData(const QByteArray &data, bool beginning = false)

详细描述

所有 QXmlReader 子类都从这个类读取输入 XML 文档。

该类通过读取 XML 文件中的编码声明来识别数据的编码,并使用相应的编码读取数据。如果没有找到编码声明,则假设数据为 UTF-8 或 UTF-16,具体取决于是否能找到字节顺序标记。

有两个方法可以给输入源填充数据:您可以构造一个带有 QIODevice* 的实例,以便输入源从该设备读取数据。或者,您可以使用 setData() 函数之一显式设置数据。

通常,您要么构建一个在 QIODevice* 上工作的 QXmlInputSource,要么构建一个空的 QXmlInputSource 并使用 setData() 设置数据。只有在非常罕见的情况下,您才会想将这两种方法结合起来使用。

QXmlReader 子类使用 next() 函数按字符读取输入。如果您想从头开始,请使用 reset()。

data() 和 fetchData() 函数非常有用,如果您想对数据进行除解析之外的操作,例如显示原始 XML 文件。在这种情况下使用 QXmlInputClass 的好处是它会尝试使用正确的编码。

另请参阅 QXmlReaderQXmlSimpleReader

成员函数文档

QXmlInputSource::QXmlInputSource()

构造一个不包含数据的输入源。

另请参阅setData().

[显式] QXmlInputSource::QXmlInputSource(QIODevice *dev)

构造一个输入源,并从设备 dev 获取数据。如果 dev 未打开,则以只读模式打开。如果 dev 为 0 或无法从设备读取,则输入源不包含任何数据。

另请参阅setData()、fetchData() 和 QIODevice.

[虚函数 noexcept] QXmlInputSource::~QXmlInputSource()

析构函数。

[虚函数] QString QXmlInputSource::data() const

返回输入源包含的数据或一个空字符串(如果输入源不包含任何数据)。

另请参阅setData()、QXmlInputSource() 和 fetchData().

[虚函数] void QXmlInputSource::fetchData()

此函数从在构造时设置的应用程序设备读取更多数据。如果输入源已经包含数据,则此函数会首先删除该数据。

如果在对象没有提供从读取数据的设备或如果没有能够从此设备获取更多的数据的情况下构造此对象,则调用该函数后,该对象不包含任何数据。

有两种情况会在其他函数调用隐式执行获取:在构造期间(所以对象可以从可用处开始有一些初始数据),并且在调用 next()(如果数据已经用完)时。

如果您使用 next(),则通常不需要使用此函数。

另请参阅data()、next() 和 QXmlInputSource().

[虚受保护函数] QString QXmlInputSource::fromRawData(const QByteArray &data, bool beginning = false)

此函数从 data 中读取 XML 文件并尝试识别编码。它将原始数据 data 转换为 QString 并返回它。它尽力为 XML 文件获取正确的编码。

如果 beginning 为 true,则此函数假定数据从新的 XML 文档的开始处开始,并查找编码声明。如果 beginning 为 false,则使用从以前的调用中确定的编码转换原始数据。

[虚函数] QChar QXmlInputSource::next()

返回输入源的下一个字符。如果此函数到达可用数据的末尾,则返回 QXmlInputSource::EndOfData。如果在之后调用 next(),则通过调用 fetchData() 尝试获取更多数据。如果 fetchData() 调用产生了新数据,此函数将返回该数据的第一个字符;否则返回 QXmlInputSource::EndOfDocument。

读取器,如 QXmlSimpleReader,如果此函数返回 QXmlInputSource::EndOfDocument,将会假设 XML 文档的末尾已经到达,并将检查提供的输入是否格式正确。因此,在重新实现此函数时,确保重复此行为非常重要。

另请参阅reset(),fetchData(),QXmlSimpleReader::parse() 和 QXmlSimpleReader::parseContinue

[虚拟] void QXmlInputSource::reset()

此函数将 next() 使用的位置设置为 data() 返回的数据的起始位置。如果您想为多个解析使用输入源,这很有用。

注意:如果底层数据源是 QIODevice,则设备中的当前位置不会自动设置为输入的起始位置。要这样做,请在设备上调用 QIODevice::seek(0)。

另请参阅next

[虚拟] void QXmlInputSource::setData(const QString &dat)

设置输入源的数据为 dat

如果输入源已包含数据,此函数将首先删除该数据。

另请参阅data

[虚拟] void QXmlInputSource::setData(const QByteArray &dat)

这是一个重载的函数。

在设置之前,将数据 dat 通过正确的文本编解码器传递。

© 2024 Qt 公司 Ltd. 此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会的发布,依照 GNU 自由文档许可版 1.3 的条款进行许可的。Qt 和相关的标志是芬兰的 Qt 公司和/或其他国家的注册商标。所有其他商标均为其各自所有者的财产。