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

时间:2009-11-30 14:25:07

标签: xml csv data-formats

有时候感觉就像使用XML一样,因为它很时髦。

20 个答案:

答案 0 :(得分:62)

一些优势:

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

从我的头脑中列举一些。

答案 1 :(得分:21)

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

答案 2 :(得分:14)

XML已经成为很多其他人已经提到过的许多好处的默认设置。所以这个问题真的变成了“何时以及为什么CSV比XML更可取?”。

我感觉CSV在以下情况下优于XML: - 您正在加载简单的表格数据 - 您可以控制数据文件的生成和使用 - 数据集很大

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

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

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

答案 3 :(得分:12)

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

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

答案 4 :(得分:7)

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

答案 5 :(得分:7)

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

“我从不同的角度尝试了史蒂文的实验。我填写了一个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

答案 6 :(得分:4)

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

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

同样相关的是,如果您的数据是2维或3维。 CSV最适合二维文本,由于其冗长,XML适用于三维数据。

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

  1. 它使用文本指定自己的文本编码(鸡和鸡蛋?)
  2. XML的更常见的架构语言都不是特别好用。
  3. 使用<tags>创建标记语言的古老而普通的方法作为标准并不是特别有用。
  4. XML试图追溯性地将更强大的标记语言(例如基于SGML的标记语言)加入到自身中,从而造成一堆不相容的遗产。
  5. 除了最简单的情况(即友好数据)之外,XML文本转义序列是否可以用于任何事情仍有待确定。
  6. 要明确的是,XML可能是目前正在使用的90%数据交换的错误选择,因为这些使用会破坏上述部分或全部假设。

答案 7 :(得分:4)

当然,它有时候很流行,也很有价值。这一切都取决于您的应用程序。我更喜欢XML中的配置文件,因为它们很容易解析。然而,我使用CSV文件进行DataGridView或数据库转储。

Daily WTF : XML vs CSV The Choice is Obvious将帮助您做出决定;)

答案 8 :(得分:3)

除了其他答案之外,XML还允许您指定文档所在的字符集。

答案 9 :(得分:3)

我发现XML的最大优点是解析功能和大多数XML库开箱即用的严格验证。由于CSV文件中的错误,与搜索损坏的值或未知行为相比,坚持良好的形式和易于理解的错误消息(xyz未在第x行,第y列中关闭)是真正的帮助。

答案 10 :(得分:2)

如果你想要移动的话,CSV会更轻量级,因为它通常比XML小两倍

XML是标准的,不会受到不同OS版本的CSV

的影响

答案 11 :(得分:2)

我会说使用XML(和/或JSON),因为有一天你或某人(脾气暴躁,枪支大)可能不得不在CSV数据中找到错误。

所以是的,我说可读性,别忘了想到另一个人!他可能在想你。

答案 12 :(得分:2)

我没有足够的声誉来评论相关的答案,但是有人建议压缩XML以获得与csv格式的大小奇偶校验。虽然这是事实,但XML压缩有时可能会让你感到困惑。如果要从一个点到另一个点传输XML数据并且它失败了,那么能够读取XML并找出问题是很好的。如果XML被压缩并且传输失败,则有时无法对其进行解压缩并检查内容。换句话说,压缩XML会取消它具有的人类可读性优势。

答案 13 :(得分:1)

即使您有复杂的数据,也可以轻松遍历XML数据。

检查以下链接:

答案 14 :(得分:1)

XML提供了一种使用元数据标记数据的方法(由标记名称和属性名称提供),而CSV则不然。将此与定义结构化层次结构的能力结合起来,当仅提供数据时,它使XML更容易理解,而CSV则需要附带的工具或文档来描述每个值的解释方式。

答案 15 :(得分:0)

我还发现一些cvs生成器/解析器对一般文本数据有很多困难。带有大量回车符和逗号和引号等的长文本字符串在操作cvs时只会让生活变得非常困难。

SSMS喜欢截断csv以获得乐趣。

答案 16 :(得分:0)

再一次用于XML:XML中的 X 代表 E xtensible(我知道,不是真正的助记符:-P)。这意味着,借助XML命名空间机制,您可以加入您喜欢的任何两种XML语言,并将它们组合在相同的文档中。鉴于只有一种CSV'语言'(不包括无数的分隔符样式),XML可以处理相当多的复杂性,并且采用模块化方式。

然而,这是CSV的优势:如果你真的有表格数据,那么XML语法通常是矫枉过正的。

答案 17 :(得分:0)

  1. 每种语言和数据库都有现有的解析器和发射器
  2. 他们处理我的编码
  3. 他们处理逃避我的问题
  4. 这对我来说很重要。

    当然,有一种半标准的方式可以用CSV进行转义(即“Excel的工作方式”),并且编写自己并不是很难,但确实需要一些时间。然后你必须默认同意带外编码。但是,因为它如此简单,人们会尝试自己编写,并且总是搞砸#2或#3。

    JSON也遇到#2和#3,并且接近满足#1。它也可以说更简单,至少对于非文档文件。毫不奇怪,我发现自己越来越多地在内部和外部使用它。

答案 18 :(得分:0)

结构化,人类可读,易于编辑,验证,可解析性,可转换性,打字,命名空间,背后强大的库,都是其中的众多原因。

最重要的是它虽然标准。

答案 19 :(得分:-2)

我也更喜欢它,因为它更具可读性。