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

这个问题如今是个政治问题,说什么都会有人反对。我只能说个人看法,那就是:如果谈数据传输,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。当然它也仍然可以用于数据传输,比如我的 blog 页面。但我们何必非纠结于数据传输这区区一个用途呢。

------------

XML 跟 JSON 的圣战,或许会成为自 vim/emacs 圣战,cli/gui 圣战等等圣战以来的又一个圣战,而所有的圣战大抵都不会有结果,因为每方都有各自的道理,谁都不服谁。
在我看来,XML 更适合数据定义,数据存储。它对数据的表达使得这个数据脱离你程序的上下文仍然存在意义并且可以被解读。所以 XML 适合作为配置文件,以及数据存储,存盘文件格式等等。
JSON 更适合数据传输。对于传输而言,双方必然需要遵循协商好的协议,因而 JSON 对数据的表达并不需要在数据传输的双方以外仍然具有可解读的意义,只要传输的双方能读懂即可。所以 json 更适合作为数据传输双方的通信协议。
如果把用途局限在数据传输这个领域,则 XML 没有任何优势。唯一可能的优势或许是,如果你的数据本来就是使用 XML 组织和定义的,直接使用 XML 传输会更方便。
数据传输跟数据存储的侧重点本来就不同,即便是 UNICODE 对于传输与存储也是两种不同的编码,所以个人觉得没有必要始终执着于把一个更适合数据存储的格式用于数据传输。

时间: 2024-10-11 17:13:04

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

XML在java或.NET中转为Json的数组或对象数据时的处理

XML在java和.NET中转为Json数据时会出现这样一个问题,当节点中只有一个节点数据时是转换为对象,有多个节点则是转为数组,为了应对这个问题我们需要在解析的时候进行如下的处理,不然就会报异常: 数据1:数组格式 "Field": [                    {                        "@name": "APPROVE",                        "@title"

php操作dom,simplexml、xpath对xml的读取,以及xml作为数据传输接口的使用的认识

php操作xml文档取数据[php对xml的解析] 1.php操作DOM[Document Object Model] 每一个文档从根节点开始构成一个树状模型[DOM] DOM文档类: DOMDocument:文档类 DOMNodeList:节点列表类 DOMNode:节点类 DOMElement:元素类 这四个类就可以针对DOM文档进行操作 2.操作DOM对象 (1)创建DOM对象: $dom = new Document();//对对象的版本,编码进行限制 (2)加载xml文件 $dom->

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

前言 一般来说,一个客户端APP并非独立存在的,很多时候需要与服务器交互.大体可分为两方面的数据,常规字符串数据和文件数据,因为这两种数据很可能传输方式不一样,比如字符串之类的数据,使用HTTP协议,选择json或xml作为数据传输结构,而以json最方便简洁,所以我们近年来的项目,就直接使用json,不再使用xml了.但是作为文件,使用HTTP协议显然不够利索,而直接使用TCP协议是更好的选择.文件传输一般都是在服务端有服务一直在监听相应的端口,客户只需要使用TCP协议,根据服务端制定的规则上

JSON 和 XML 优缺点的比较

JSON 和 XML 优缺点的比较 1.JSON定义(JavaScript Object Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. 2.XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XM

json、xml ---- 数据格式生成类

自己写的一个生成json/xml 格式数据的类,可用于api数据传输: 1 <?php 2 class Response{ 3 /** 4 *生成指定数据格式 5 *@param intval $code 状态码 6 *@param string $message 状态说明 7 *@param array $data 数据 8 *@param string $type 要求返回的数据格式 9 *@return string $data 数据 10 */ 11 public static func

JSON&amp;XML 解析总结

JSON & XML解析 JSON(数据传输): JSON具有对象(字典)和数组两种数据格式.字典用“{}”,数组用“[]”.其实也是key-value(字符串,数值,布尔类型,对象,空对象,数组)键值对. JSON 可以与Object-C相互转换  ->则是JSON的解析过程(正向与逆向的解析-为了说明自己定义的正逆)->可用于数据的持久化,将JSON数据写入文件中保存(逆向):从文件中读出数据(正向). JSON ->Object-C(正向):jsondata->jso

JavaScript入门篇之新生代JSON遇XML

信息化到处被提及的特点,就是拥有大量的数据交互的格式.前阵子学习了XML的结构化数据,在学习javascript的时候又接触到了JSON,都作为数据的存储格式,二者之间有什么区别和联系呢,查了很多的资料,小编在这里就相当于写个总结了. 十年前,XML是主要的数据交换格式.它的出现,尤如一股清新的空气,以及令人惊喜的SGML(标准通用标记语言),是一个巨大的进步.它使人们能够做到以前想都不敢想的事情,本质上讲,XML就是一个文本文件,在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋

由SOAP说开去 - - 谈谈WebServices、RMI、RPC、SOA、REST、XML、JSON

引子: 关于SOAP其实我一直模模糊糊不太理解,这种模模糊糊的感觉表述起来是这样: 在使用web服务时(功能接口),本来我就可以通过安卓中固有的http类(使用http协议),来发送http请求,并且解析返回的数据(一般是xml或者json),得到我要的结果 为什么还非得多此一举使用soap呢,而且soap自己的介绍也说,它其实没有发明技术,它其实就是http+xml 在安卓中使用soap的方法是:(下载第三方类库),装配一个soap请求体,使用soap包装过的http类,通过http把请求体发

XML和JSON

本文翻译自xmlpull,SAX,android,JSON官方文档(http://www.saxproject.org/quickstart.html,http://www.json.org/),经测试整理如下. 网络传输数据 一般我们会在网络上传输一些格式化的数据,这些数据有自己的语义.当另一方收到数据时,以相同的语义进行解析,获取真正想要的数据. 在网络中传输数据时最常用的方法是:XML和JSON,本文先介绍XML解析. XML,可扩展标记语言(Extensible Markup Langu