为什么所有人都使用二进制文件,如果所有人都可以使用XML?
答案 0 :(得分:7)
当然,由于性能,当您必须定义树结构时,XML是很好的,但并非所有类型的数据都适合它。你会在XML文件中存储一个3d模型吗?还是一张图片?
XML可以很好地处理文本数据,有效的二进制数据如图像,声音,压缩文件等等。
解析时真的很冗长,而且在性能很重要时你不想使用它(比如想想游戏的网络代码)。
如果我必须阅读包含例如矢量或点的结构的XML文件,我会自己开枪。
使用解析器将内容转储到内存中,例如:
fread(&myBuf, sizeof(vector_struct), 10, in);
会让我感到愚蠢..
答案 1 :(得分:1)
您是否看过 XML?这似乎是硬件制造商出售更大硬盘的一个阴险计划: - )
但是,除了幽默之外,我会选择使用二进制文件:
答案 2 :(得分:1)
在许多情况下,XML将是一个不错的选择,但有些情况下您需要二进制格式或者至少应该考虑它:
以下是使用二进制文件的不充分理由:
答案 3 :(得分:1)
阅读本文:Joel on software: Back to basics。是的,这是很多文字。是的,它似乎与你的问题没有关系,但不是,这对你的问题来说不是一个坏的答案 - 如果我是乔尔,我只是在这里引用整篇文章并声称拥有数以亿计的代表。
这是一个非常光辉的例子:二进制格式总是对齐,每个x..x + y位代表一组数据。移动到其他组就像获取原始起始点和组的索引一样容易,并将这两个值乘以(x * n ..(x + y)* n)以获得与该组相关的所有数据。您如何使用XML完成此操作?
答案 4 :(得分:1)
充分利用这两个世界。将XSD绑定与使用序列化/反序列化为二进制和XML的工具结合使用 - 例如www.codesynthesis.com XSD。
答案 5 :(得分:0)
XML是一个解析的地狱。作为一种易于人们编写和程序阅读的格式,它实际上是最糟糕的格式之一。
二进制文件还有一个优点,就是你可以跳过大部分解析,只是将文件的某些部分视为直接内存转储(如果你这么倾向 - 你应该小心谨慎)。
答案 6 :(得分:0)
另一堆原因。随意添加。
答案 7 :(得分:0)
并非所有类型的数据都可以用xml表示。并且它节省了大量空间来存储二进制而不是XML的值。如果数据将由XML解析器解析,那么它应该以XML格式存储,否则为什么要浪费空间。
答案 8 :(得分:0)
因为解析XML:
因此,使用二进制文件更适合表演。
而且,还有: