恐怕没有答案可以为您提供此问题的适当解决方案。
MORK
是一个文本数据库,包含文件地址簿数据(.mab
文件)和邮件文件夹摘要(.msf
文件)。
该格式由 David McCusker 编写,混合了各种数字命名空间,并且没有记录,似乎不再被开发/维护/支持。掌握它的唯一方法是对它进行逆向工程,同时使用这种格式查看源代码。
然而,有经验的人试图为这种文件格式编写解析器,但没有成功。根据 Wikipedia 的说法,前 Netscape 工程师 Jamie Zawinski 对格式有这样的看法:
...在我 19 年的职业生涯中见过的最伤脑筋的文件格式
此页面说明以下内容:
简而言之,让我们数一数它(莫克的)罪恶:
- 重叠的两个不同的数字命名空间。
- 它无法决定使用哪种字符引用语法:反斜杠?带美元符号的十六进制编码?
- 有时允许 C++ 行注释,但有时 // 只是 URL 中的一对字符。
- 它进行了所有这些严肃的压缩工作(两个不同的字符串驻留哈希表),然后在不使用 UTF-8 的情况下写出 Unicode 字符串:写出未打包的 wchar_t 字符!
- 更糟糕的是,它使用 3 字节编码对每个 wchar_t 进行十六进制编码,这意味着文件大小将是 3x 或 6x(取决于 whchar_t 是 2 字节还是 4 字节。)
- 它伪装成“文本”文件格式,而实际上它只是另一个二进制 blob 文件,只是它用 ASCII 表示所有幻数。它不是人类可读的,也不是可手动编辑的,因此它使用短行且不使用二进制字符的唯一好处是它使文件更大。哦等等,我的错误,这实际上根本不是一个好处。”
挫败感在这里闪耀,这显然不是一项简单的任务。
因此,在 Mozilla 产品之外显然不存在真正能够解析这种格式的解析器。
我过去曾对复杂的文件格式进行逆向工程,并且知道只要有耐心和适量的精力就可以完成。
可悲的是,这似乎也是您唯一的选择。一个好的起点是看一下Thunderbird 的源代码。
我知道这并没有给你一个直接的解决方案,但我认为考虑到这种格式的情况,这是对这个问题的唯一答案。
当然,您可以随时查看扩展 API,看看它是否允许您以比直接处理文件格式更结构化的方式访问所需的数据。