XML文檔定義的形式
兩種定義形式:DTD、Schema
DTD:數據類型定義(Data Type Definition),用以描述XML文檔的文檔結構,是早期的XML文檔定義形式。
Schema:其本身是基於XML語言編寫的,在類型與語法上的限定能力比DTD強,處理也比較方便,因為這個正逐漸代替DTD成為新的模式定義語言
XML文檔定義形式的區別
兩種本質區別:
Schema本身是xml文檔結構的定義和描述,其最重要的作用是用來約束XML文件,並且驗證XML文件的有效性。
DTD的作用是定義XML的合法構建模塊,它使用一系列的合法元素來定義文檔結構。他們之間的區別有以下幾點。
1、Schema本身就是XML文檔,DTD定義跟XML沒有什么關系,Schema在理解和實際應用有很多的好處。
2、DTD文檔的結構是“平鋪型”的,如果定義很復雜的XML文檔,很難把握各元素之間的嵌套關系,Schema文檔結構性強,各元素之間的嵌套關系非常直觀。
3、DTD只能指定元素含有文本,不能定義元素文本的具體類型,如字符型,整型,日期型,自定義類型等。Schema在這方面比DTD強大。
4、Schema支持元素節點順序的描述,DTD沒有提供無序情況的描述,要定義無序必需窮舉排列的所有情況。
5、對命名空間的支持。DTD無法利用XML的命名空間,Schema很好滿足命名空間。
解析XML文檔的幾種方式
主要有三種方式:DOM、SAX、STAX。
1、DOM
處理大型文件時其性能下降的非常厲害,這個問題是由DOM的樹結構所造成的,這種機構占用的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問。
2、SAX
不現於DOM,SAX是事件驅動型的XML解析方式,它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它就會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問。
3、STAX
Streaming API For XML(Stax)
