【问题标题】:QTextDocument serializationQTextDocument 序列化
【发布时间】:2015-08-12 07:21:48
【问题描述】:

我阅读了有关 QTextDocument 序列化的旧主题:herehere。 据我了解,一次真正的无需额外代码的序列化和反序列化方法是将文档保存和读取为 html 文件。 但是,我认为,这种方法并不快,因为 html 字符串解析是一个困难且耗时的操作。

在其他情况下,我可以将文档保存为二进制格式并通过按顺序调用的 QTextCursor 方法对其进行反序列化,我认为这比 html 解析更快。

是否存在 QTextDocument 二进制序列化的代码示例?

【问题讨论】:

  • @Arun 我在帖子中写了这个链接。存在可以序列化为二进制格式的描述,但没有代码示例。
  • @Milovidov - 二进制序列化将非常困难,它不像是单字节数组,文本文档内部有许多不同的资源,它们甚至无法通过公共 API。您是否真的根据经验确定您存在性能问题?
  • @ddriver 我没有基准测试,因为我不知道我可以比较哪种解决方案。二进制序列化比逻辑解析文本字符串更快。
  • @Milovidov - 毫无疑问,解析格式化文本会更慢,但你还没有确定它太慢而无用。正如我所说,二进制序列化在这种情况下几乎是不可能的。因此,您可能希望使用 HTML,并且仅当它被证明太慢时,才使用更复杂的解决方案来打扰自己,因为太复杂以至于不值得提高性能。

标签: qt serialization binary-data qtextdocument qtextcursor


【解决方案1】:

QTextDocumentWriter,但没有相应的读者。 如果您需要阅读文档,请查看this answer

【讨论】:

  • QTextDocumentWriter 正是 OP 描述的问题。它会将额外的格式转换为 HTML 或 ODF,或者销毁额外的信息并输出纯文本文件。
【解决方案2】:

我没有找到纯二进制序列化,但我找到了将 ODF 格式文件读取到 QTextDocument 的工作示例。这也是字符串(xml)解析方法,但是odf格式接受避免为文档存储多个文件,如果他包含图像。

源码可以在okular git repohere查看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多