我的应用程序应该使用哪种文件格式?

时间:2010-05-12 12:34:06

标签: xml database sqlite yaml file-format

我正在编写一个管理待办事项列表的应用程序。与“传统”待办事项列表应用程序不同,我希望用户将这些待办事项列表文件放在他们的文件系统上并且可见,而不是被应用程序神奇地隐藏。我希望用户能够通过电子邮件将待办事项列表发送给对方等等。此外,我后来打算创建一个带有数据库后端的Web应用程序,允许用户在待办事项列表上进行协作。

我的问题是,我应该使用哪种文件格式来存储我的应用程序的本地文件? 当我开始考虑这个问题时,我想到的第一个想法是XML因为它(有些)可读但后来我想到了sqlite然后发现了YAML 现在我很困惑。一些指导意见将不胜感激。

更新

我应该提一下,我很可能会用C ++,Objective C或(不太可能)python编写这个代码。因此无论提出何种格式,都需要有适当的库。

更新2:

我还担心能够将所有这些不同的格式与我的应用程序相关联,所以当打开我的应用程序格式的文件时,我的应用程序会打开,而不是像文本编辑器那样。

5 个答案:

答案 0 :(得分:2)

我非常喜欢将SQLite数据库用作文档文件(为您提供结构,良好的分析工具,交易等);但如果您希望用户只是简单地获取文档并通过电子邮件发送,那么基于文本的强大格式会更好。

XML是一种可能性;但它太冗长和丑陋了。 YAML更具可读性,它看起来像.INI文件,但结构更多。 JSON是一个中间版,不像YAML那样可读,不像XML那样难看。

所有三种格式都可以采用任意结构,生成基于文本的表示并从中重构结构,因此它们在功能上是等价的。

XML的主要优点似乎是它很容易检测到它被意外损坏,因为它将不再是一个格式良好的文档。但是,为任何格式添加一些校验和或类似字段并不难。

答案 1 :(得分:2)

另一种替代方法,特别是如果您希望能够将其他内容嵌入到文档(如图像)中,则使用打包文件格式。优点是用户只需发送一个嵌入了所有内容的文件。另一个优点是可以很好地压缩大型XML结构。

此类格式的示例是ODF(OpenDocument Format),它使用包含清单文件的zip包,或者使用OPC(Open Packaging Conventions)容器的Office OpenXML。两种格式均由ISO标准化。

答案 2 :(得分:0)

如何在您的应用中使用sqlite并添加导出/导入功能,以便在xml中导出/导入这些列表?

答案 3 :(得分:0)

如果您希望用户能够将文件编辑为文本,那么任何文本格式都应该没问题,这比其他任何内容都要优先。

如果您不希望用户能够将其编辑为文本(他们意外搞乱数据的可能性较小)而只是通过您的应用程序编辑文件,那么我会选择Sqlite。

关于关联文件格式,您不关联格式,关联文件扩展名,因此如果您不希望它们与其他应用程序关联,请构建您自己的文件扩展名并将应用程序注册到该应用程序。

答案 4 :(得分:-1)

我会说XML,但即使我建议这样做,我也会感觉到,既然你问了这个问题,我建议你得到一本关于这个主题的编程书并开始阅读....这是一个学校项目吗? ?