电竞比分网-中国电竞赛事及体育赛事平台

分享

解析XML文件的幾種方式和區(qū)別

 昵稱(chēng)22369024 2015-05-02
有兩種定義形式,dtd文檔類(lèi)型定義和SchemaXML模式;
XML Schema 和DTD都用于文檔驗(yàn)證,但二者還有一定的區(qū)別,本質(zhì)區(qū)別是:Scheme本身是xml的,可以被XML解析器解析,這也是從DTD上發(fā)展Schema的根本目的。
另外,
XML Schema 是內(nèi)容開(kāi)放模型,可擴(kuò)展,功能性強(qiáng),而DTD可擴(kuò)展性差。
XML Schema 支持豐富的數(shù)據(jù)類(lèi)型,而 DTD不支持元素的數(shù)據(jù)類(lèi)型,對(duì)屬性的類(lèi)型定義也很有限。
XML Schema 支持命名空間機(jī)制,而DTD不支持。
XML Schema 可針對(duì)不同情況對(duì)整個(gè)XML 文檔或文檔局部進(jìn)行驗(yàn)證;而 DTD缺乏這種靈活性。
XML Schema 完全遵循XML規(guī)范,符合XML語(yǔ)法,可以和DOM結(jié)合使用,功能強(qiáng)大;而DTD 語(yǔ)法本身有自身的語(yǔ)法和要求,難以學(xué)習(xí)。


解析XML文件的幾種方式和區(qū)別

Dom解析 在內(nèi)存中創(chuàng)建一個(gè)DOM樹(shù),該結(jié)構(gòu)通常需要加載整個(gè)文檔然后才能做工作。由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹(shù)或基于對(duì)象的,樹(shù)在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對(duì)數(shù)據(jù)和結(jié)構(gòu)作出更改能隨機(jī)訪問(wèn)文件內(nèi)容,也可以修改原文件內(nèi)容.


SAX解析 SAX處理的優(yōu)點(diǎn)非常類(lèi)似于流媒體的優(yōu)點(diǎn)。分析能夠立即開(kāi)始,而不是等待所有的數(shù)據(jù)被處理。SAX解析器采用了基于事件的模型,它在解析XML文檔的時(shí)候可以觸發(fā)一系列的事件,當(dāng)發(fā)現(xiàn)給定的tag的時(shí)候,它可以激活一個(gè)回調(diào)方法,告訴該方法制定的標(biāo)簽已經(jīng)找到。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時(shí)檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存中。這對(duì)于大型文檔來(lái)說(shuō)是個(gè)巨大的優(yōu)點(diǎn)線性解析,不能隨機(jī)訪問(wèn),也無(wú)法修改原文件

 

 JDOM解析 JDOM的目的是成為Java特定文檔模型,它簡(jiǎn)化與XML的交互并且比使用DOM實(shí)現(xiàn)更快.JDOM僅使用具體類(lèi)而不使用接口。這在某些方面簡(jiǎn)化了API,但是也限制了靈活性。第二,API大量使用了Collections類(lèi),簡(jiǎn)化了那些已經(jīng)熟悉這些類(lèi)的Java開(kāi)發(fā)者的使用。

 DOM4j解析 DOM4J使用接口和抽象基本類(lèi)方法。DOM4J大量使用了API中的Collections類(lèi),但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復(fù)雜的API的代價(jià),但是它提供了比JDOM大得多的靈活性。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多