可扩展标记语言(XML)是一种来自标准通用标记语言(SGML)的文本格式. 与SGML相比, XML更简单. 超文本标记语言(HTML), 经过对比, 显得更为简单. 尽管如此, 一本好的HTML参考书有一英寸厚. 这是因为文档的格式化和结构化是一件复杂的事情.
大部分XML的优势是围绕它作为可交互数据序列格式的角色. 作为数据表示语言, XML有着两个巨大的优势:
1. 它是基于文本的.
2. 它是位置无关的.
所有这些使得她相比其他数据交换格式在更高层次上独立于应用程序. 事实上, XML已经是W3C的标准, 这意味着已经无需再去争论(或者看起来如此).
遗憾的是, XML不能很好的适用于数据交换, 就好像扳手并不是用来钉钉子的. 它包含了太多的包装, 而且它跟大多数编程语言的数据模型不匹配. 大部分程序员在第一眼见到XML的时候, 他们都被XML的丑陋和低效所震惊了. 事实证明, 第一反应旺旺是正确的. 还有另一种蚊子符号, 她不但有XML的所有优点, 而且她更适合于数据交换. 这个符号就是JavaScript对象符号(JSON).
关于XML的最明智的见解(例如: xmlsuck.org)指出XML在作为数据交互格式上存在很大的问题. 但这一不足被它所带来的互操作性和开放性所弥补.
JSON拥有同样的互操作性和开放性, 而且没有其他不足.
让我们在社区里认为重要的属性上来比较XML和JSON.
简单
XML比SGML更简单, 但JSON比XML还要简单. JSON拥有更简单的语法, 而且直接对应到现代语言的数据结构.
可扩展性
JSON是不可扩展的, 因为她不需要被扩展. JSON不是一个文档标记语言, 因此没有任何必要去定义新的标签或者属性来表示内部数据.
互操作性
JSON拥有XML一样的互操作性能.
开放性
JSON至少与XML一样开放, 也许更开放. 因为她不在社团/政治标准化斗争的中心.
总结这些是XML的部分优势
XML是可供人类阅读的
相比XML, JSON更加容易阅读. 她也更容易书写.同时, 也更容易被机器读取和写入.
XML可以用来作为数据交换格式, 使得用户能够将他们的数据在相似的程序之间相互移动.
同样的, JSON也如此.
XML提供了一种数据结构, 以包含更多的信息.
同样的, JSON也如此.
XML很容易处理, 因为数据的结构是简单而且标准的.
JSON可以更容易的处理, 因为她的结构更简单.
有很多可重用的软件提供给程序员来处理XML, 他们不需要重写代码.
JSON, 作为一个更简单的符号, 需要更少的软件. 在JavaScript和Python中, JSON符号是内置与程序语言的. 压根不需要任何多余的软件. 在其他语言中, 仅仅需要少量的JSON特定的代码. 比如, JSON.org提供了一个只包含三个类的包就可以使得Java语言支持JSON.
XML将数据的表示和数据的结构分开
XML需要将数据结构转换成文档结构. 这个映射是复杂的. JSON结构是基于数组和记录的. 那就是数据的组成. XML结构是基于元素(可以嵌套), 属性(不能嵌套), 原始蚊子, 实体, DTD和其他元数据结构.
一种通用的交换格式
JSON是一种更好的数据交换格式. XML是更好的文档交换格式. 用正确的工具做正确事.
一个数据多中展示
JSON不提供任何显示能力因为她不是文档标记语言.
自描述数据
XML和JSON在这一点上是一样的.
完全集成所有传统数据库和格式
(关于XML的陈述有时有点夸张) XML文档可以包含任何可以想象的数据类型 - 从传统数据, 如文本和数字、多媒体对象, 如声音, 到活动格式, 如Java Applet 或者ActiveX 组件.
JSON没有<[CDATA[]]>特性, 因此她不适合用来承载声音或者图像或者其他大的二进制载荷. JSON为数据进行了优化. 此外, 在数据交换系统中提供可执行程序可能会引入危险的安全问题.
国际化
XML和JSON都用Unicode编码.
开放性和可扩展性
XML有一个开放的结构允许你在需要的时候添加其他国家的艺术元素. 这意味着你可以随时调整你的系统来接受特定行业的词汇.
这些词汇可以自动转换为JSON, 从XML迁移到JSON是非常简单的.
XML对于人类和机器阅读起来都很容易.
JSON比XML更容易让人和机器阅读.
XML是面向对象的
事实上, XML是面向文档的. JSON是面向数据的. JSON可以更容易的映射到面向对象的系统.
XML被计算机行业广泛的使用
JSON刚刚被大家所知. 她的简洁以及从很容易从XML转换到JSON的特性使得JSON会更加被广泛的使用.
原文: JSON: The Fat-Free Alternative to XML
地址: http://www.json.org/xml.html