设计跨平台多内容类型文件格式的最佳方法

Best way to design cross-platform multi-content-type file format?

本文关键字:格式 文件 最佳 方法 类型 跨平台      更新时间:2023-09-26

我需要为一组应用程序(桌面/在线/移动)重新设计文件格式,其中包含一组非线性数据和多个图像。我不想使它成为一个带有嵌入图像的大型 XML,如下所示:

  • 首先,它可以增长到例如使用JavaScript解析缓慢的大小。
  • 其次,我希望它可以"手动"编辑。

压缩不是必需的。我只想将其作为单个文件分发。我希望我的解决方案尽可能跨平台。

我最近编造的是一个 *.tar.gz 存档,里面有 xmls 和图像。

  • 我的应用程序的桌面(C++/Qt)版本正在使用zlib读取文件(这很难编码,但可以工作)。
  • 在线版本使用PHP(执行tar)解压缩文件(将内容缓存在数据库中),并通过ajax将xmls和图像传递给javascript。
  • 当我开始开发安卓版本时,我有点卡住了,我不知道如何在这里阅读它。

我想知道是否有更好/更简单的解决方案来实现这一目标?

我找到的解决方案是例如:

  • Blender .blend文件 http://en.wikipedia.org/wiki/Blender_%28software%29#File_format 但是,如果没有任何特殊工具,这是无法读取的。
  • OpenOffice文件实际上是zip。但我想使用这个或 tar.gz 没有太大区别。在移动平台或javascript上阅读它仍然是一个问题。

可能没有"最佳方法"可以做到这一点,但我希望有一些广泛使用的解决方案?

我将不胜感激对此的任何想法。

我不确定这是否符合您的"可手动编辑"标准,但要制作单文件、跨平台的二进制格式,Google Protocol Buffers 非常有用且高效,并且可以跨主要平台和语言工作。

如果"可手动编辑"至关重要,只需一些额外的工作,您可以使用自己的消息库编写简单的实用程序来支持创建/更新/删除现有文件的部分(例如,提取图像进行编辑,并支持替换它们。

如果它必须在JavaScript中编辑,也许JSON可能是一个不错的选择?您可以使用 base64 数据 url 编码插入图片/视频/其他文件,Javascript 和许多其他语言都支持这种编码。