Qt数据存储(二)

Qt 中的 XML 支持

Qt 提供 API 来读取和解析 XML 流,以及写入这些流。以下关键类通过提供必要的基础设施来促进这些行动:

  • QXmlStreamReader类提供了一个解析器来读取 XML。它是一个格式良好的 XML 1.0 解析器,不包括外部解析实体。
    • 它理解并解析 XML 命名空间。例如,对于 StartElement,namespaceUri() 返回元素所在的命名空间,name () 返回元素的本地名称。namespaceUri() 和name () 的组合唯一地标识一个元素。
    • 它不是 CPU 密集型的,因为它不会将整个 XML 文档树存储在内存中。它仅在报告时存储当前令牌。
  • QXmlStreamWriter类为 XML 编写器提供了一个简单的流 API。它是用于编写 XML的QXmlStreamReader的对应物,它在setDevice () 指定的 QIODevice 上运行。
    • 它是一个简单的 API,为您要编写的每个 XML 令牌或事件提供专用函数。
    • 它负责根据在编写元素或属性时指定的 namespaceUri 为命名空间添加前缀。如果您必须使用某些标准化前缀,您可以通过使用 writeNamespace() 或 writeDefaultNamespace() 手动声明命名空间来强制编写器使用它们。
    • 它可以通过添加换行和缩进来自动格式化生成的 XML 数据,使其具有可读性。可以使用自动格式化属性打开此功能。
    • 默认情况下,它以 UTF-8 编码 XML。可以使用 setCodec() 强制执行不同的编码。

除了读写 XML 流,Qt 还为以下附加用例提供 API:

  • 使用XQuery和 XPath查询 XML 数据源
  • 使用 XSLT 进行 XML 转换
  • XML 模式验证

以下主题提供了对 Qt XML 支持的更多见解:

  • 命名空间简介
  • XML 流
  • XQuery 的捷径
  • XmlListModel
  • Qt XML 模式

Qt 中的 JSON

JSON 是一种基于文本的数据交换开放标准,易于阅读和解析。它用于表示简单的数据结构和关联数组,称为对象。它与 JavaScript 相关,但是是一种独立于语言的符号形式。

一个对象可以有两种形式:

  • 名称/值对的集合
  • 有序值列表
  { “last_name”:“Routledge”,“first_name”:“Ronald”,“birth_date”:1960 }
   "colours": ["green", "blue", "yellow"]
  • Qt 中的 JSON 支持
  • JSON 保存游戏示例

本地存储

Local Storage API 提供了从 QML 和 JavaScript 访问 SQL 数据库中本地离线存储的能力。

这些数据库是特定于用户和特定于 QML 的,但可供所有 QML 应用程序访问。它们作为SQLite数据库(SQL 数据库驱动程序)存储在 QDeclarativeEngine::offlineStoragePath() 的 Databases 子目录中。

该 API 符合 HTML5 Web 数据库 API 的同步 API,W3C 工作草案 2009 年 10 月 29 日(HTML5 Web 数据库 API)。

有关使用本地存储 API 的基本演示,请参阅Qt 快速示例 - 本地存储。

  • Qt Quick 本地存储 QML 类型

QSettings 类

QSettings类提供应用程序设置的持久存储。应用程序通常会记住上一个会话的设置。

设置在不同平台上的存储方式不同。例如,在 Windows 上,它们存储在注册表中,而在 macOS 上,它们存储在 XML 文件中。

QSettings使您能够以便携的方式保存和恢复应用程序设置。构造和销毁QSettings对象是轻量级和快速的。在创建QSettings的对象时,最好不仅指定应用程序的名称,还指定组织的名称。例如:

QSettings settings("MyCompany", "Accountancy");

资源

Qt 资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序经常需要某个文件或一组文件,这将非常方便。它还可以防止该特定文件丢失。

资源数据既可以编译成二进制并在应用程序代码中立即访问,也可以动态创建二进制资源并由应用程序向资源系统注册。

默认情况下,应用程序代码可以通过与存储在源树中相同的文件名: /prefix或带有 qrc 方案的 URL 访问资源。

  • Qt 资源系统

档案归档

存档文件是通常压缩的文件或目录的集合,以减少它们在驱动器上消耗的空间。存档文件的示例有 ZIP、TAR、RAR 和 7z。

Qt 支持由 zlib 生成的档案(参见qCompress() 和 qUncompress())。

你可能感兴趣的:(Qt数据存储(二))