什么是固定格式文件?XML如何优于它们?

什么是固定格式文件?XML如何优于它们?,xml,Xml,我在谷歌上搜索了固定格式文件(FFF),结果如下: 我不确定哪一个是固定格式的文件。第二个是FFF还是别的什么 FFF解决了哪些问题?XML如何比FFF更好地解决这些问题? 与FFF相比,XML格式有什么缺点吗 提前感谢。因为您是在比较XML,所以我假设您指的是固定宽度的文本文件(后面的示例)。说哪个更好并不容易,这在很大程度上取决于您的用例 XML的一些优点 灵活(即字段可以更长/更短,甚至可以在不破坏现有代码的情况下添加) 有许多实现可供选择 您可以使用机器可读的模式或多或少地完全

我在谷歌上搜索了固定格式文件(FFF),结果如下:

我不确定哪一个是固定格式的文件。第二个是FFF还是别的什么

FFF解决了哪些问题?XML如何比FFF更好地解决这些问题? 与FFF相比,XML格式有什么缺点吗


提前感谢。

因为您是在比较XML,所以我假设您指的是固定宽度的文本文件(后面的示例)。说哪个更好并不容易,这在很大程度上取决于您的用例

XML的一些优点

  • 灵活(即字段可以更长/更短,甚至可以在不破坏现有代码的情况下添加)
  • 有许多实现可供选择
  • 您可以使用机器可读的模式或多或少地完全定义它。
    (这意味着,如果您只有一个定义文件的模式,那么计算机可以在某种程度上生成代码来读取和验证文件)
固定宽度文件的一些优点

  • 更简单的是,读取和写入文件或多或少都是琐碎的
  • 可能占用更少的空间,XML相当“健谈”

    • 与XML相比,FFF的最大优势在于内置了基于索引的随机访问功能。与FFF相比,XML的最大缺点是必须以线性方式对其进行解析

      假设您有一个保存个人记录的数据文件。这些记录可以保存id、姓名、地址和电话号码

      固定格式

      ID          : 8 chars
      Surname     : 36 chars
      Firstname   : 36 chars
      Address     : 100 chars
      Phone       : 20 chars
      -----------------------
      Total Space: 200 chars
      
      Offset = (600-1)*200 = 119800 bytes
      fseek() + fread() = done
      
      Um..... 
      
      XML格式(人为的,可以是多种格式)

      XML格式

      ID          : 8 chars
      Surname     : 36 chars
      Firstname   : 36 chars
      Address     : 100 chars
      Phone       : 20 chars
      -----------------------
      Total Space: 200 chars
      
      Offset = (600-1)*200 = 119800 bytes
      fseek() + fread() = done
      
      Um..... 
      
      XML最大的优点是可扩展性(即X并非从无到有)。XML是一个奇妙的数据片段、RSS提要、配置文件等。它很容易发布,无需特殊的库和基本的知识,而且在存储空间上也是合理的(只要你不发疯)。它很容易理解,有大量的标准支持,而且几乎每个人的工具箱中都有一个XML解析器。通用的“理解”只是一个模式文档(老学究的DTD),验证等也是如此


      但XML最大的缺点一直是,现在是,在量子计算取得长足进步之前,永远是:速度。XML是一个非常糟糕的存储系统

      谢谢你。我很感激。有没有一本书专门讨论这些事情?嗯。我读过的并不特别多。我对XML和FFF的看法更多的是实践而不是研究。我毫不怀疑,每一家公司在该行业都有稳固的地位。每一个都是一个工具,就像所有的工具一样,它们都是为特定的目的而设计的。在设计解决方案时,只需考虑您需要什么以及您想要什么,以选择适合您的最佳工具。固定文件格式(有时称为平面文件格式)、固定宽度格式,以及一系列其他术语,它们通常都意味着一件事:实体大小(记录、字段等)是预先知道的,并且是固定大小。正是这种固定大小,特别是在针对所管理介质(通常为磁盘文件)的本机存储分配大小进行优化时,通过有效地允许您将文件视为虚拟“阵列”来提高性能。@XMLBoy Yes。其中的内容可以是不同的,但“填充”了哨兵非数据。字符串数据表示是真正的变体。长度为36个字符的“name”字段实际上只能是2('Al')。该字段的剩余空间未用于该记录,但这是您为固定宽度格式的访问速度付出的代价。有趣的是,你应该提到IBM。他们用于数据库的最高扩展平台zSeries OS/390是一个在硬件中实现的数据库管理系统,操作系统位于顶部,它使用固定宽度的数据作为性能的基石。@XMLBoy在我展示的示例中,所有字段都是固定长度的,只是每个字段的长度不同。但正如你所见,每条记录的总长度是固定的。这就是性能值得夸耀的地方。我还有一个疑问——FFF也被称为“固定宽度文本文件”吗?还是平面文件数据库?我需要确定,这样我才能在谷歌搜索中使用正确的词。谢谢