有兩種定義形式,dtd文檔類型定義和SchemaXML模式; XML Schema 和DTD都用于文檔驗(yàn)證,但二者還有一定的區(qū)別,本質(zhì)區(qū)別是:Scheme本身是xml的,可以被XML解析器解析,這也是從DTD上發(fā)展Schema的根本目的。 另外, XML Schema 是內(nèi)容開放模型,可擴(kuò)展,功能性強(qiáng),而DTD可擴(kuò)展性差。 XML Schema 支持豐富的數(shù)據(jù)類型,而 DTD不支持元素的數(shù)據(jù)類型,對屬性的類型定義也很有限。 XML Schema 支持命名空間機(jī)制,而DTD不支持。 XML Schema 可針對不同情況對整個XML 文檔或文檔局部進(jìn)行驗(yàn)證;而 DTD缺乏這種靈活性。 XML Schema 完全遵循XML規(guī)范,符合XML語法,可以和DOM結(jié)合使用,功能強(qiáng)大;而DTD 語法本身有自身的語法和要求,難以學(xué)習(xí)。 解析XML文件的幾種方式和區(qū)別 Dom解析 在內(nèi)存中創(chuàng)建一個DOM樹,該結(jié)構(gòu)通常需要加載整個文檔然后才能做工作。由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹或基于對象的,樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改能隨機(jī)訪問文件內(nèi)容,也可以修改原文件內(nèi)容.
JDOM解析 JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實(shí)現(xiàn)更快.JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經(jīng)熟悉這些類的Java開發(fā)者的使用。 DOM4j解析 DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復(fù)雜的API的代價,但是它提供了比JDOM大得多的靈活性。 |
|