2

为什么都使用二进制文件,如果都可以使用 XML ?

4

9 回答 9

7

当然,由于性能的原因,当您必须定义树结构但并非所有类型的数据都适合它时,XML 是很好的。您会将 3d 模型存储在 XML 文件中吗?还是图像?

XML 可以很好地处理文本数据,而有效的二进制数据(如图像、声音、压缩文件等)呢?

解析起来非常冗长且繁重,并且您不想在性能很重要时使用它(例如考虑游戏的网络代码)。

如果我必须读取包含例如矢量或点结构的 XML 文件,我会开枪打死自己。

使用解析器代替将内容转储到内存中,例如:

fread(&myBuf, sizeof(vector_struct), 10, in);

会让我觉得很傻。。

于 2010-03-13T13:07:49.197 回答
1

两全其美。将 XSD 绑定与可序列化/反序列化为二进制和 XML 的工具一起使用 - 例如 www.codesynthesis.com XSD。

于 2010-03-13T13:53:26.373 回答
1

见过XML 吗?硬件制造商出售更大的硬盘似乎是一个阴险的计划:-)

但是,抛开幽默不谈,如果出现以下情况,我会选择使用二进制文件:

  • 我不太关心将信息提供给外部系统,或移植到其他平台。
  • 我想以最大速度读取和写入它(无需解析/生成 XML)。
  • 我不需要它可读或容易转换。
  • 我正在研究一个 XML 没有意义(嵌入式 C)或 XML 处理库不容易获得的系统。
于 2010-03-13T13:10:40.650 回答
1

在许多情况下,XML 将是一个不错的选择,但在某些情况下您需要二进制格式或至少应该考虑它:

  • 如果您需要随机访问(并且无法将文件加载到内存中 - 例如数据库)
  • 如果文件大小是一个问题(例如图像、电影)
  • 如果数据本质上是二进制的(例如图像、声音)
  • 如果性能是一个问题(以上所有)

以下不是使用二进制的好理由:

  • XML 难以解析(几乎所有可用语言都有优秀的 XML 库)
  • 二进制防止用户篡改(它不会,它只会使它更难)
于 2010-03-13T13:12:51.323 回答
1

阅读:Joel 谈软件:回归基础。是的,它有很多文字。是的,它似乎与您的问题无关,但不,这对您的问题来说并不是一个糟糕的答案 - 如果我是乔尔,我会在这里引用整篇文章并为此声明一个无数的代表。

这是一个非常闪亮的例子:二进制格式总是对齐的,每个 x..x+y 位代表一组数据。移动到其他组就像获取原始起点和组的索引并将这两个值乘以 ( x*n..(x+y)*n ) 以获得与该组相关的所有数据一样简单。确切地说,您如何使用 XML 做到这一点?

于 2010-03-13T13:13:47.733 回答
0

XML 是一个难以解析的地狱。作为一种易于人们编写和程序读取的格式,它实际上是最糟糕的格式之一。

二进制文件还有一个优点,即您可以跳过大部分解析,只需将文件的某些部分视为直接内存转储(如果您愿意,您应该谨慎行事)。

于 2010-03-13T13:08:11.833 回答
0
  • 更小 --> 更好地传输。
  • 根据访问方法,解析速度更快。
  • 可读性较差(二进制文件比 XML 文件更难破解)

还有一堆原因。随意添加。

于 2010-03-13T13:08:44.200 回答
0

并非每种类型的数据都可以用 xml 表示。并且它可以节省大量空间来以二进制而不是 XML 存储值。如果数据将由 XML 解析器解析,那么它应该存储在 XML 中,否则为什么要浪费空间。

于 2010-03-13T13:08:52.740 回答
0

因为解析 XML :

  • 需要时间
  • 需要大量计算

因此,使用二进制文件对性能更好。


并且 :

  • XML 是一种非常冗长的格式:想想所有那些使文件变得更大的标签。
  • 将您的数据表示为文本并不总是容易/可能的
于 2010-03-13T13:08:57.680 回答