XML 跟 JSON 的圣战,或许会成为自 vim/emacs 圣战,cli/gui 圣战等等圣战以来的又一个圣战,而所有的圣战大抵都不会有结果,因为每方都有各自的道理,谁都不服谁。

在我看来,XML 更适合数据定义,数据存储。它对数据的表达使得这个数据脱离你程序的上下文仍然存在意义并且可以被解读。所以 XML 适合作为配置文件,以及数据存储,存盘文件格式等等。

JSON 更适合数据传输。对于传输而言,双方必然需要遵循协商好的协议,因而 JSON 对数据的表达并不需要在数据传输的双方以外仍然具有可解读的意义,只要传输的双方能读懂即可。所以 json 更适合作为数据传输双方的通信协议。

如果把用途局限在数据传输这个领域,则 XML 没有任何优势。唯一可能的优势或许是,如果你的数据本来就是使用 XML 组织和定义的,直接使用 XML 传输会更方便。

数据传输跟数据存储的侧重点本来就不同,即便是 UNICODE 对于传输与存储也是两种不同的编码,所以个人觉得没有必要始终执着于把一个更适合数据存储的格式用于数据传输。

**************************************************************************************************************************************

如果谈数据传输,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/20764767

XML在数据传输哪些方面会比JSON有优势,在哪些领域更加适合?的更多相关文章

  1. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  2. Django中数据传输编码格式、ajax发送json数据、ajax发送文件、django序列化组件、ajax结合sweetalert做二次弹窗、批量增加数据

    前后端传输数据的编码格式(contentType) 提交post请求的两种方式: form表单 ajax请求 前后端传输数据的编码格式 urlencoded formdata(form表单里的) ja ...

  3. APP并非一个人在战斗,还有API—Xamarin.Android回忆录

    前言 一般来说,一个客户端APP并非独立存在的,很多时候需要与服务器交互.大体可分为两方面的数据,常规字符串数据和文件数据,因为这两种数据很可能传输方式不一样,比如字符串之类的数据,使用HTTP协议, ...

  4. [Network] HTML、XML和JSON学习汇总

    写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...

  5. 数据解析(XML和JSON数据结构)

    一   解析 二 XML数据结构 三 JSON 数据结构     一 解析 1  定义: 从事先规定好的格式中提取数据     解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...

  6. JSON 和 XML 优缺点的比较

    JSON 和 XML 优缺点的比较 1.JSON定义(JavaScript Object Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换 ...

  7. XML与JSON的对比

    XML与JSON的对比 1.各自定义 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类 ...

  8. Ajax中XML和JSON格式的优劣比较

    刚做完一个小的使用Ajax的项目.整个小项目使用JavaScript做客户端,使用PHP做服务器端.利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式.做完后基本做一个简单 ...

  9. 14 - XML、JSON、PLIST对比和APP生命周期

    XML中间的 数据表达/传输数据的语言 优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXML.HTML 缺点:传输小型数据时,特别啰嗦 size / speed = time JSON ...

随机推荐

  1. Spring MVC url提交参数和获取参数

    [转载:http://blog.csdn.net/mahoking] 普通URL提交参数         该格式url为:url.do?param1=mahc&param2=8888.00 需 ...

  2. oracle管道输出

    通常我们会在oracle中用dbms_output输出调试信息,但dbms_output只能在调用过程完成才返回结果,不能实时输出的.这意味着通常我们经常要等几分钟或更长的时间才能看到调试信息,那怎么 ...

  3. Zend框架2入门(二) (转)

    Zend框架2使用一个模块系统,和你组织内每个你的主应用程序特定代码模块.骨架提供的应用程序模块是用于提供引导,错误和路由配置到整个应用程序.它通常是用来提供应用水平控制器,比如说,应用程序的主页,但 ...

  4. DiskLruCache 硬盘缓存 使用简介

    简介 LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时.对此,Google又提供了一套硬盘缓存的解决方案:DiskLru ...

  5. SpringMVC05使用注解的方式

    <body> <a href="add">新增</a> <a href="update">修改</a> ...

  6. 网页JavaScript4

    表单验证:一.非空验证:1.内容是不是空的.判断值的长度是不是0.length属性.压缩空格的函数. 2.内容是不是改变了. 二.对比验证:1.验证两个控件值的关系(相同,大小) 2.验证控件的值与某 ...

  7. IKAnalyzer原理分析

    IKAnalyzer原理分析 IKAnalyzer自带的 void org.wltea.analyzer.dic.Dictionary.disableWords(Collection<Strin ...

  8. TreeView控件之,后台构建TreeView(WinForm小程序)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX0AAAIdCAIAAABeBzrBAAAgAElEQVR4nOzdd5Qc130n+tl/nr3e5+

  9. 关于.net类型转换判断问题

    做项目时,发现这个问题,由于数据库中的字段可能为null,如果在.net程序直接转换时,比如 ltTime.Text =DateTime.Parse(dt.Rows[0]["m_Time&q ...

  10. 如何使用CSS Sprites技术进行图片合并

    http://jingyan.baidu.com/article/066074d6757654c3c21cb02d.html