- JavaWeb整合開(kāi)發(fā)實(shí)例精通:Struts+Hibernate+Spring
- 閆術(shù)卓 吳峻申
- 502字
- 2018-12-31 14:45:40
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快很多。
- 案例式C語(yǔ)言程序設(shè)計(jì)
- INSTANT OpenCV Starter
- ReSharper Essentials
- 高效微控制器C語(yǔ)言編程
- Manga Studio Ex 5 Cookbook
- Python語(yǔ)言程序設(shè)計(jì)
- C語(yǔ)言程序設(shè)計(jì)(第2版)
- 大學(xué)計(jì)算機(jī)基礎(chǔ)(第2版)(微課版)
- Java程序設(shè)計(jì)
- 零基礎(chǔ)趣學(xué)C語(yǔ)言
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- Swift 4 Protocol-Oriented Programming(Third Edition)
- Spring Boot+MVC實(shí)戰(zhàn)指南
- Arduino Wearable Projects
- Web開(kāi)發(fā)的平民英雄:PHP+MySQL