官术网_书友最值得收藏!

2.3.5 DOM和SAX解析XML詳解

DOM是用與平臺(tái)和語(yǔ)言無(wú)關(guān)的方式表示XML文檔的官方W3C標(biāo)準(zhǔn)。DOM是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片段的集合。這個(gè)層次結(jié)構(gòu)允許開(kāi)發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個(gè)文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作(所以其劣勢(shì)就是基于大文件的加載速度很慢,因?yàn)樗切枰考虞d后才能操作)。

由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹或基于對(duì)象的。DOM以及廣義的基于樹的處理具有幾個(gè)優(yōu)點(diǎn)。

(1)首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對(duì)數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任意時(shí)間在樹中上下導(dǎo)航,而不是像SAX是一次性的處理。DOM使用起來(lái)也要簡(jiǎn)單得多。

(2)另一方面,對(duì)于特別大的文檔,解析和加載整個(gè)文檔可能很慢且很耗資源,因此使用其他手段來(lái)處理這樣的數(shù)據(jù)會(huì)更好。比如基于事件的模型,比如SAX。SAX這種處理的優(yōu)點(diǎn)非常類似于流媒體的優(yōu)點(diǎn)。分析能夠立即開(kāi)始,而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時(shí)檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存中。這對(duì)于大型文檔來(lái)說(shuō)是個(gè)巨大的優(yōu)點(diǎn)。事實(shí)上,應(yīng)用程序甚至不必解析整個(gè)文檔,它可以在某個(gè)條件得到滿足時(shí)停止解析。一般來(lái)說(shuō),SAX比它的替代者DOM快很多。

主站蜘蛛池模板: 永嘉县| 张北县| 贺兰县| 绥江县| 广德县| 江北区| 商河县| 平凉市| 昌黎县| 永定县| 鹤庆县| 伊宁市| 平顺县| 门头沟区| 原平市| 巍山| 平和县| 浦城县| 土默特右旗| 延庆县| 斗六市| 宁蒗| 保亭| 麻江县| 广灵县| 永登县| 昆明市| 泊头市| 特克斯县| 河间市| 平遥县| 宁化县| 江达县| 增城市| 图们市| 榕江县| 正定县| 兖州市| 板桥市| 上杭县| 罗田县|