XML在数据传输哪些方面会比JSON有优势,在哪些领域更加适合?
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有优势,在哪些领域更加适合?的更多相关文章
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- Django中数据传输编码格式、ajax发送json数据、ajax发送文件、django序列化组件、ajax结合sweetalert做二次弹窗、批量增加数据
前后端传输数据的编码格式(contentType) 提交post请求的两种方式: form表单 ajax请求 前后端传输数据的编码格式 urlencoded formdata(form表单里的) ja ...
- APP并非一个人在战斗,还有API—Xamarin.Android回忆录
前言 一般来说,一个客户端APP并非独立存在的,很多时候需要与服务器交互.大体可分为两方面的数据,常规字符串数据和文件数据,因为这两种数据很可能传输方式不一样,比如字符串之类的数据,使用HTTP协议, ...
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- JSON 和 XML 优缺点的比较
JSON 和 XML 优缺点的比较 1.JSON定义(JavaScript Object Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换 ...
- XML与JSON的对比
XML与JSON的对比 1.各自定义 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类 ...
- Ajax中XML和JSON格式的优劣比较
刚做完一个小的使用Ajax的项目.整个小项目使用JavaScript做客户端,使用PHP做服务器端.利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式.做完后基本做一个简单 ...
- 14 - XML、JSON、PLIST对比和APP生命周期
XML中间的 数据表达/传输数据的语言 优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXML.HTML 缺点:传输小型数据时,特别啰嗦 size / speed = time JSON ...
随机推荐
- windows 编程 之 问题解决笔记
问题目录: 1.如何隐藏和显示窗口 2.InvalidateRect在连续使用鼠标或光标时暂时不起作用 3.在VC项目里自己添加头文件和cpp文件在编译阶段报错 4.在static 控件里添加子控件或 ...
- lesson4:使用锁Lock来解决重复下单的问题
demo源码:https://github.com/mantuliu/javaAdvance 中的类Lesson4IndependentLock 在上一节中,我们分析了Lock的源代码并一起实践了粗粒 ...
- Microsoft Dynamics CRM4.0编程---说明
Introduction(说明) If your organization has customers, you need a software system to help you manage y ...
- SpringMVC整合fastjson-1.1.41
以前用fastjson也只是硬编码,就好像这篇博文写的http://blog.csdn.net/jadyer/article/details/24395015 昨天心血来潮突然想和SpringMVC整 ...
- 国内三大PT(Private Tracker)站分析
除这一行外,下面全部内容都是转载.出处不明. 国内三大PT(Private Tracker)站分析 先郑重的声明一下:本文以下的内容所有是复制粘贴的,不代表老夫的观点. 事实上内容我也没细致看. 贴这 ...
- 关于PHP的curl开启问题 (转)
今天在做一个新浪登录功能,新浪提供的PHP SDK里需要用到curl_init()函数,在调试的时候报找不到curl_init()的方法. 经搜索得知需要开启curl的php扩展,那curl又是什么呢 ...
- 让jquery easyui datagrid列支持绑定嵌套对象
嵌套对象是指返回的json数据,是对象的某个属性自带有属性.而我们恰恰又需要这个属性,默认情况下easyui的datagrid是不支持绑定嵌套对象的.比如:datagrid的field属性只能为fie ...
- [转] boost::any的用法、优点和缺点以及源代码分析
boost::any用法示例: #include <iostream> #include <list> #include <boost/any.hpp> typed ...
- C# - openxml 操作excel - '“System.IO.Packaging.Package”在未被引用的程序集中定义'
在 CodeProject中,有位网友写的一篇基于OpenXML SDK 2.0对excel(大数据量)进行操作,其中,运行的时候,有如下错误: 类型“System.IO.Packaging.Pack ...
- errno.h 错误码描述.
描述:一般说的Linux源码的目录,默认是基于 /usr/include/ 的. 使用 char *strerror(int errnum); 函数打印错误代码的描述.我简单对比了一下,发现描述大体一 ...