好的,我已经阅读了几本关于XML的书籍并编写了程序来吐出来,什么不是.但这是问题所在.逗号分隔文件和XML文件都是"人类可读的".但一般来说,逗号分隔文件在我看来比XML文件容易得多; 标签通常占用尽可能多的空间而不是数据.这似乎模糊了我正在阅读的内容,格式可以使页面包含相同的信息,您可以在逗号分隔文件中的单行文本中包含这些信息.并且以逗号分隔的文件解析起来要复杂得多.那么真正的问题是为什么要使用XML?只是因为所有酷孩子都在做这件事?
好处
XML比CSV具有许多优点:
分层数据组织
自动数据验证(XML Schema或DTD)
轻松转换格式(使用XSL)
易于识别关系结构
可以与XML-RPC结合使用
适用于对象持久性(编组)
简化企业对企业的通信
有用的相关技术(XPath,DOM)
与现代Web浏览器紧密集成
提取,转换和加载(ETL)工具
向后文件格式兼容性(版本属性)
数字签名
它完全取决于问题域以及您要解决的问题.
例
最后一项是许多人在编写网页时遗漏的内容.考虑一下你有一个大型歌曲数据存储的情况.歌曲有艺术家,专辑,每分钟节拍等等.您可以将数据导出到XML,编写一个简单的样式表以将XML呈现为XHTML,然后将浏览器指向XML页面.浏览器将XML呈现为网页.
你不能用CSV做到这一点.
缺点
Joel Spolsky有一篇很好的文章,关于为什么XML作为一个复杂的数据存储是一个糟糕的选择:它很慢.(与数据库不同,数据库可以使用单个CPU指令检索上一个或下一个记录,遍历XML文档中的记录要慢得多.)可以说,这可以被视为一个优化问题,通过等待18个月来解决.从而:
解析比其他格式更慢
语法冗余会降低可读性
文档膨胀可能会影响存储成本
无法轻松建模重叠(非分层)数据结构
设计糟糕的XML文件格式并不罕见(根据我的经验;需要引用)
相关问题
另请参阅:为什么我应该使用人类可读文件格式.
这些不是唯一的两个选项,你也可以使用比xml轻得多的JSON或YAML.
一般来说,如果你有简单的表格数据,但有很多特殊字符,那么CSV就不是一个糟糕的选择.对于结构化数据,请考虑使用其他3中的一个.
XML支持复杂,结构化和层次化的事物表示.这与CSV可以轻松存储的内容相去甚远.
考虑面向对象环境中的复杂对象图.它可以非常容易地序列化为XML文档,但CSV无法处理这样的事情.