SAX解析,DOM解析以及XML HTML JSON之间区别

  • Post author:
  • Post category:其他



XML


定义




可扩展性标


记语言





(Extensible Markup Language, XML)

,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。


XML


使用


DTD(document type definition)


文档类型定义来组织数据


;


格式统一,跨平台和语言,早已成为业界公认的标准。






XML

是标准通用标记语言


(SGML)


的子集,非常适合


Web


传输。


XML


提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。


JSON定义





JSON(JavaScript Object Notation)

一种轻量级的




数据交换格式



,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。

JSON


采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于


C


语言的习惯


(


包括


C, C++, C#, Java, JavaScript, Perl, Python





)


体系的行为。这些特性使


JSON


成为理想的数据交换语言。


HTML



超文本标记语言



,标准通用标记语言下的一个应用。







超文本






就是指页面内可以包含





图片









链接




,甚至




音乐









程序




等非文字元素。 超文本标记语言的结构包括










部分(英语:


Head


)、和





主体





部分(英语:


Body


),其中











部提供关于网页的信息,





主体





部分提供网页的具体内容。




1.


XML




html


有什么关系


?



XML

是一种类似于


HTML


的标记语言,


XML


是用来描述数据的,



XML

的标记不是在


XML


中预定义的,你必须定义自己的标记






XML

使用文档类型定义


(DTD)


或者模式


(Schema)


来描述数据,


XML


使用


DTD


或者


Schema


后就是自描述的语言,




XML




eXtensibleMarkupLanguage


)是可扩展标记语言,它与


HTML


一样




,都是处于

SGML


,标准通用语言。



Xml




Internet


环境中跨平台的,依赖于内容的技术,



是当前处理结构化文档信息的有力工具。扩展标记语言

XML


是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然


XML


占用的空间比二进制数据要占用更多的空间,但


XML


极其简单易于掌握和使用。


XML

的简单使其易于在任何应用程序中读写数据



,这使

XML


很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持


XML


,那就意味着程序可以更容易的与


Windows





MacOS,Linux


以及其他平台下产生的信息结合,然后可以很容易加载


XML


数据到程序中并分析他,并以


XML


格式输出结果。


因为

XML





W3C


制定的,


XML


的标准化工作由


W3C





XML


工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过


email


交流对


XML


标准的意见,并提出自己的看法


(www.w3.org/TR/WD-xml)


。因为


XML


是个公共格式,


(


它不专属于任何一家公司


)


,你不必担心


XML


技术会成为少数公司的盈利工具,



XML

不是一个依附于特定浏览器的语言。




2.


X


M



L




HTML


的主要区别是什么?



XML




HTML


的不同可以归纳为


3


点:


一、

XML


扩展性比


HTML





XML




Extensible Markup Languages


)是扩展标记语言的英语缩写,他可以创建个性化的标记语言,可以称之为元语言。


XML


的标记语言可以自定义,这样可以提供更多的数据操作,而不像


HTML


一样,只能局限于按一定的格式在终端显示出来。


HTML


的功能只有浏览器放入显示和打印,仅仅适合静态网页的要求。


二、

XML


的语法比


HTML


严格


由于

XML


的扩展性强,它需要稳定的基础规则来支持扩展。它的严格规则为:





起始和结束的标签相匹配





嵌套标签不能相互嵌套





区分大小写


相对应

XML


的严格规则,


HTML


语言并没有规定标签的绝对位置,也不区分大小写,而这些全部由浏览器来完成识别和更正。


三、

XML





HTML


互补


XML

可以获得应用之间的相应信息,提供终端的多项处理要求,也能被其他的解析器和工具所使用,



在现阶段,

XML


可以转化成相应的


HTML



,来适应当前浏览器的需求。


3.


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


中推广还属于初级阶段。



4.


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







5.


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


仍有不可动摇的地位。


(3).

实例比较






XML




JSON


都使用结构化方法来标记数据,下面来做一个简单的比较。






<1>.




XML


表示中国部分省市数据如下:


<?


xml version=”1.0″ encoding=”utf-8″


?>


<


country


>


<


name


>

中国

</


name


>


<


province


>


<


name


>

黑龙江

</


name


>


<


citys


>


<


city


>

哈尔滨

</


city


>


<


city


>

大庆

</


city


>


</


citys


>


</


province


>


<


province


>


<


name


>

广东

</


name


>


<


citys


>


<


city


>

广州

</


city


>


<


city


>

深圳

</


city


>


<


city


>

珠海

</


city


>


</


citys


>


</


province


>


<


province


>


<


name


>

台湾

</


name


>


<


citys


>


<


city


>

台北

</


city


>


<


city


>

高雄

</


city


>


</


citys


>


</


province


>


<


province


>


<


name


>

新疆

</


name


>


<


citys


>


<


city


>

乌鲁木齐

</


city


>


</


citys


>


</


province


>


</


country


>


<2>.




JSON


表示中国部分省市数据如下:


var

country =

{

name: “中国”,

provinces: [

{ name: “黑龙江”, citys: { city: [“哈尔滨”, “大庆”]} },

{ name: “广东”, citys: { city: [“广州”, “深圳”, “珠海”]} },

{ name: “台湾”, citys: { city: [“台北”, “高雄”]} },

{ name: “新疆”, citys: { city: [“乌鲁木齐”]} }

]

}


编码的可读性来说




XML


有明显的优势,毕竟人类的语言更贴近这样的说明结构。


JSON


读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过


JSON


的索引


country.provinces[0].name


就能够读取





黑龙江





这个值。






编码的手写难度来说




XML


还是舒服一些,好读当然就好写。不过写出来的字符


JSON


就明显少很多。去掉空白制表以及换行的话,


JSON


就是密密麻麻的有用数据,而


XML


却包含很多重复的标记字符。








版权声明:本文为shangandeyu_kun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。