何时以及为什么XML优于CSV?

Nic*_*ick 32 xml csv data-formats

有时感觉就像使用XML一样,因为它很时尚.

Rob*_*nik 63

一些优势:

  • 您可以针对XSD验证XML数据
  • 您可以轻松地向其他方提供合同(作为XSD),这些合同应该创建/使用XML数据,而不是直接描述它们
  • 在XML数据表示中,您可以在多级中具有一对多关系
  • XML可以说比CSV更具可读性
  • .net框架本身支持XML

从我的头脑中列举一些.

  • XML比CSV更具可读性 - >远非总是如此!firstname,lastnames,如John,Doe Bart,Smith Will,Bate,而不是整个<firstname> <lastname> stuf.由于字段很少,标记通常会降低可读性 (9认同)
  • 这个清单已经相当不错了.在我看来,你还应该补充说,到处都有标准的解析器,并且XML压缩得非常好,所以较大的大小并不是真正的问题. (5认同)
  • +1但XML并不总是更具可读性 (4认同)

dna*_*irl 21

当您的数据是严格表格并且您知道其结构时,.csv文件很好.一旦开始在不同级别的数据之间建立关系,xml就会更好地工作,因为只需嵌套就可以使关系变得明显(即使没有模式).


小智 16

XML已经成为很多其他人已经提到过的许多好处的默认设置.所以这个问题真的变成了"何时以及为什么CSV优于XML?".

在以下情况下,我觉得CSV比XML更可取: - 您正在加载简单的表格数据 - 您可以控制数据文件的生成和消耗 - 数据集很大

如果前两个点为真,则CSV完全可用,并且数据集越大,性能优势就越大.

我做了一个快速测试加载~8,000条记录,每条记录有6个文本字段.加载和解析XML需要大约8秒钟.加载CSV只需不到1秒.

在许多情况下,XML的开销是值得的,但是当星星对齐时,CSV更有意义.


Jam*_*win 12

当您只有一系列与某些信息相关的值时,CSV非常有用,并且您知道您将始终存储每个字段的值.

XML具有自描述数据(标签)和层次结构的优点 - 这使您在存储数据方面具有更大的灵活性.


dcp*_*dcp 7

您可以拥有更复杂的层次结构等,并使用XML与CSV结构.它提供了更多的灵活性.

  • 灵活性总是带来复杂性.电视的功能越多,遥控器上的按钮就越多. (6认同)
  • 而复杂性. (3认同)

小智 7

我在网上发现了一个有趣的性能测试.当不需要XML的特性时,上帝的缺点示例.

"我从不同的角度尝试了Steven的实验.我在Excel XP电子表格中填入了一位数的数字,将其保存在XML和逗号分隔的文本文件(CSV)中.然后我用WinZip压缩它们然后打开两个用Excel.这是我发现的:

XML文件为840MB,CSV 34MB - 压缩率为2,500%,XML文件为2.5MB,CSV为0.00015MB(150KB) - 差异为1,670%.

同样引人注目的是将文件解压缩并将文件呈现为Excel电子表格所花费的时间:使用XML文件花了大约20分钟; CSV花了1分钟 - 差异达2000%."

http://www.xml.com/pub/a/2004/12/15/deviant.html


小智 5

当数据是非结构化的(未知模式)并且将被人类读取时,XML 比 CSV 更可取。

可以说,除非数据主要包含文本,否则 CSV 也适用于人类消费。

同样相关的是,如果您的数据是 2 维或 3 维。CSV 最适合 2 维文本,并且由于其冗长,XML 可以很好地处理 3 维数据。

XML 的整个“标准”是夸张的,不应按字面意思理解。XML 确实存在巨大的技术问题,许多解决方案并不是特别优雅,或者在许多情况下是有用的:

  1. 它使用文本来指定自己的文本编码(鸡和蛋?)
  2. 没有一种更常见的 XML 模式语言工作得特别好。
  3. 使用创建标记语言的古老而普通的方法<tags>作为标准并不是特别有用。
  4. XML 试图追溯性地将更强大的标记语言(例如基于 SGML 的标记语言)硬塞到自身中,从而造成一堆不兼容的遗留问题。
  5. 除了最简单的情况(即友好数据)之外,XML 文本转义序列是否适用于任何其他情况仍有待确定。

需要明确的是,对于目前使用的 90% 的数据交换而言,XML 可能是不正确的选择,因为这些用途破坏了上述部分或全部假设。