我的TBIRD地址簿上有几个地址列表。
每当我需要编辑包含在多个列表中的地址时,查找哪个列表包含要修改的地址是一件痛苦的事。
作为一个帮助工具,我想阅读几个文件,并给用户一个列表 xxx.MAB文件仅在一次搜索中包含搜索到的地址。
拥有生成的列表,用户只需编辑正确的地址列表即可。
想知道关于所提到的MAB文件格式的最低限度,因此我可以打开+搜索字符串到文件中。
提前致谢
juan
PD已经问过mozilla论坛,但是mozilla没有计划在一个主文件上整合地址,并且不同的列表只包含指向主服务器的链接。有一个人想要做到这一点,但由于缺乏资源,他不知道何时,在这个论坛上有一个类似的问题提到MORK文件,但我的实际TBIRD看起来好像所有地址都包含在MAB文件中
答案 0 :(得分:8)
我担心没有答案会为你提供适当的解决方案。
MORK
是一个文本数据库,包含文件地址簿数据(.mab
文件)和邮件文件夹摘要(.msf
文件)。
这种格式由David McCusker编写,是各种数字命名空间的混合,并且没有文档记录,似乎不再开发/维护/支持。你能够掌握它的唯一方法是使用这种格式查看源代码并行反向工程。
然而,有经验的人试图为这种文件格式编写解析器而没有任何成功。根据维基百科前Netscape工程师Jamie Zawinski对此格式的说法:
...我见过的最受脑损伤的文件格式 我十九年的职业生涯
This page声明如下:
简而言之,让我们计算它(Mork's)的罪行:
- 两个不同的数字命名空间重叠。
- 它无法决定使用哪种字符引用语法:反斜杠?带有美元符号的十六进制编码?
- 有时允许使用C ++行注释,但有时//只是URL中的一对字符。
- 它涉及所有这些严重的压缩工作(两个不同的字符串实习哈希表),然后写出Unicode字符串 不使用UTF-8:写出解压缩的wchar_t字符!
- 更糟糕的是,它使用3字节编码对每个wchar_t进行十六进制编码,这意味着文件大小将是3x或6x(取决于whchar_t是否为2 字节或4个字节。)
- 它伪装成“文本”文件格式,实际上它只是另一个二进制blob文件,除了它代表了它的所有魔力 ASCII中的数字。它不是人类可读的,它不是手工编辑的,所以 唯一的好处是它使用短线和 不使用二进制字符是它使文件更大。哦 等等,我的错误,这根本不是一个好处。“
挫折感在这里闪耀,这显然不是一项简单的任务。
因此,在Mozilla产品之外显然不存在实际上能够解析此格式的解析器。
我过去已经采用了逆向工程复杂的文件格式,并且知道可以通过耐心和适量的能量来完成。
可悲的是,这似乎也是你唯一的选择。一个好的开始就是看Thunderbird's source code。
我知道这并没有给你一个直接的解决方案,但我认为这是考虑这种格式的情况的问题的唯一答案。
当然,您可以随时查看extension API,看看是否允许您以比直接处理文件格式更有条理的方式访问所需的数据。
答案 1 :(得分:3)
读取mork的示例代码
Perl:http://metacpan.org/pod/Mozilla::Mork