XML 跟 JSON 的圣战,或许会成为自 vim/emacs 圣战,cli/gui 圣战等等圣战以来的又一个圣战,而全部的圣战大抵都不会有结果,由于每方都有各自的道理,谁都不服谁。
在我看来,XML 更适合数据定义,数据存储。它对数据的表达使得这个数据脱离你程序的上下文仍然存在乎义而且能够被解读。因此 XML 适合做为配置文件,以及数据存储,存盘文件格式等等。
JSON 更适合数据传输。对于传输而言,双方必然须要遵循协商好的协议,于是 JSON 对数据的表达并不须要在数据传输的双方之外仍然具备可解读的意义,只要传输的双方能读懂便可。因此 json 更适合做为数据传输双方的通讯协议。
若是把用途局限在数据传输这个领域,则 XML 没有任何优点。惟一可能的优点或许是,若是你的数据原本就是使用 XML 组织和定义的,直接使用 XML 传输会更方便。
数据传输跟数据存储的侧重点原本就不一样,即使是 UNICODE 对于传输与存储也是两种不一样的编码,因此我的以为没有必要始终执着于把一个更适合数据存储的格式用于数据传输。json
**************************************************************************************************************************************vim
若是谈数据传输,XML 相对 JSON 没有任何优点,从一开始就是如此。
不少当下的 XML 支持者可能都忘了,XML 一开始不是为网络传输设计的,而是为了替代 HTML。因此它才会如此强调结构化(相对 HTML 4 的混乱结构而言容易分析)和格式中内建编码信息(便于跨国数据交换)。可是 XML 诞生后在这方面一直不温不火,也就在 XHTML 中略有建树。其它的应用虽然也有,好比 MathXML、XSLT 之类,也都不算被普遍应用。直到后来 RSS 和 ePub 流行,XML 才算找回来一些本来的方向。
XML 开始流行的具体历史已经难以考证,只知道是乘了 Java 企业应用和 DOM (文档对象模型)标准的东风。Java 企业应用中 XML 常常被用来作以下用途:配置文件和传输格式(SOAP,简单对象传输协议)。随着 Java 应用的增长,XML 的应用也在拓宽,但整体上超不出这两方面。
若是只是做为键值对类型配置文件的格式,XML 并不优秀,它的问题就是包含了太多对真正数据传输无用的东西,用计算机世界的术语,就是 Payload 不够高。好比处处存在的尖括号,好比层级式的标签结构,好比 DTD/Schema。最基本的问题在哪里?带宽。这里的每个字节都会成为传输带宽的负担。惟一的好处是 DOM 解析器几乎处处都是,但相对于 JSON 来讲,这个优点也不复存在。
总体上看,我是乐于见到 JSON 代替 XML 的。不是由于 XML 失势,而是整个程序开发世界终于能够以一种理性的眼光看待手中的工具了。XML 自有它的用途,好比 ePub,好比 SVG。固然它也仍然能够用于数据传输。网络
references:工具
http://www.zhihu.com/question/20764767ui