1.定义先容
(1).XML定义
扩展标记措辞 (Extensible Markup Language, XML) ,用于标记电子文件使其具有构造性的标记措辞,可以用来标记数据、定义数据类型,是一种许可用户对自己的标记措辞进行定义的源措辞。 XML利用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和措辞,早已成为业界公认的标准。

XML是标准通用标记措辞 (SGML) 的子集,非常适宜 Web 传输。XML 供应统一的方法来描述和交流独立于运用程序或供应商的构造化数据。
(2).JSON定义
JSON(JavaScript Object Notation)一种轻量级的数据交流格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交流。JSON采取兼容性很高的、完备独立于措辞文本格式,同时也具备类似于C措辞的习气(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为空想的数据交流措辞。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。
2.XML和JSON优缺陷
(1).XML的优缺陷
<1>.XML的优点
A.格式统一,符合标准;
B.随意马虎与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺陷
A.XML文件弘大,文件格式繁芜,传输占带宽;
B.做事器端和客户端都须要花费大量代码来解析XML,导致做事器端和客户端代码变得非常繁芜且不易掩护;
C.客户端不同浏览器之间解析XML的办法不一致,须要重复编写很多代码;
D.做事器端和客户端解析XML花费较多的资源和韶光。
(2).JSON的优缺陷
<1>.JSON的优点:
A.数据格式比较大略,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以大略的通过eval()进行JSON数据的读取;
C.支持多种措辞,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等做事器端措辞,便于做事器真个解析;
D.在PHP天下,已经有PHP-JSON和JSON-PHP涌现了,偏于PHP序列化后的程序直接调用,PHP做事器真个工具、数组等能直接天生JSON格式,便于客户真个访问提取;
E.由于JSON格式能直接为做事器端代码利用,大大简化了做事器端和客户真个代码开拓量,且完成任务不变,并且易于掩护。
<2>.JSON的缺陷
A.没有XML格式这么推广的深入民气和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于低级阶段。
3.XML和JSON的优缺陷比拟
(1).可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
(3).编码难度方面。
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org供应的工具,但是JSON的编码明显比XML随意马虎许多,纵然不借助工具也能写出JSON的代码,可是要写好XML就不太随意马虎了。
(4).解码难度方面。
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度险些为0。这一点XML输的真是没话说。
(5).盛行度方面。
XML已经被业界广泛的利用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax该当变成Ajaj(Asynchronous Javascript and JSON)了。
(6).解析手段方面。
JSON和XML同样拥有丰富的解析手段。
(7).数据体积方面。
JSON相对付XML来讲,数据的体积小,通报的速率更快些。
(8).数据交互方面。
JSON与JavaScript的交互更加方便,更随意马虎解析处理,更好的数据交互。
(9).数据描述方面。
JSON对数据的描述性比XML较差。
(10).传输速率方面。
JSON的速率要远远快于XML。
4.XML与JSON数据格式比较
(1).关于轻量级和重量级
轻量级和重量级是相对来说的,那么XML相对付JSON的重量级表示在哪呢?该当表示在解析上,XML目前设计了两种解析办法:DOM和 SAX。
<1>.DOM
DOM是把一个数据交流格式XML算作一个DOM工具,须要把XML文件全体读入内存,这一点上JSON和XML的事理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,由于JSON构建于两种构造:key/value,键值对的凑集;值的有序凑集,可理解为数组;
<2>.SAX
SAX不须要全体读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,以是SAX适宜于大规模的解析。这一点,JSON目前是做不到得。
以是,JSON和XML的轻/重量级的差异在于:
JSON只供应整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;
XML供应了对大规模数据的逐步解析方案,这种方案很适宜于对大量数据的处理。
(2).关于数据格式编码及解析难度
<1>.在编码方面。
虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML大略,纵然不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都利用Unicode编码,且其与数据交流格式XML一样具有可读性。
主不雅观上来看,JSON更为清晰且冗余更少些。JSON网站供应了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适宜于标记文档,而JSON却更适于进行数据交流处理。
<2>.在解析方面。
在普通的web运用领域,开拓者常常为XML的解析伤脑筋,无论是做事器端天生或处理XML,还是客户端用 JavaScript 解析XML,都常常导致繁芜的代码,极低的开拓效率。
实际上,对付大多数Web运用来说,他们根本不须要繁芜的XML来传输数据,XML流传宣传的扩展性在此就很少具有上风,许多Ajax运用乃至直接返回HTML片段来构建动态Web页面。和返回XML并解析它比较,返回HTML片段大大降落了系统的繁芜性,但同时短缺了一定的灵巧性。同XML或 HTML片段比较,数据交流格式JSON 供应了更好的大略性和灵巧性。在Web Serivice运用中,至少就目前来说XML仍有不可动摇的地位。