1 / 26

第 15 章 SAX2建立XML應用程式

第 15 章 SAX2建立XML應用程式. 15-1 SAX2 的基礎 15-2 使用 VB 建立 SAX 應用程式 15-3 應用實例:顯示 XML 文件 15-4 應用實例:計算 XML 元素數目和值. 15-1 SAX2的基礎. SAX2 是什麼 DOM 和 SAX 的差異 SAX 的優缺點. SAX2 是什麼.

erich-brady
Télécharger la présentation

第 15 章 SAX2建立XML應用程式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第15章 SAX2建立XML應用程式 • 15-1 SAX2的基礎 • 15-2 使用VB建立SAX應用程式 • 15-3 應用實例:顯示XML文件 • 15-4 應用實例:計算XML元素數目和值

  2. 15-1 SAX2的基礎 • SAX2是什麼 • DOM和SAX的差異 • SAX的優缺點

  3. SAX2是什麼 • SAX2是Simple API for XML version 2,也就是SAX版本2,這是一組程式設計介面,將XML文件視為一個文字流的資料,在讀取XML元素時觸發一系列的事件,只需撰寫事件處理程序,就可以取得XML元素的內容。 • SAX技術屬於一種開放的標準,原來主要為針對Java提供的程式設計介面,目前微軟已經將SAX2技術加入了MSXML剖析器,所以COM相容的程式語言,例如:Visual Basic、Visual C++都可以使用SAX技術開發XML應用程式。

  4. DOM和SAX的差異-1 • DOM和SAX技術的差異,我們可以來看看DOM和SAX到底是如何剖析XML文件,使用的XML文件範例很簡單,如下所示: <hello> <message>大家好!</message> <message>Say Hello!</message> </hello>

  5. DOM和SAX的差異-2 DOM如何剖析XML文件 • 如果使用DOM剖析XML文件,在建立XMLDOM物件後使用load方法載入XML文件,這是一個樹狀結構的節點,如下圖所示:

  6. DOM和SAX的差異-3 SAX如何剖析XML文件1 • 當使用SAX載入XML文件,它的操作有如開啟一個「循序檔案」(Sequential File),將XML元素和內容視為文字檔案的字元讀入,在讀到XML元素的開始標籤、結尾標籤和內容時將產生一系列的事件,如下所示: startDocument、startElement、characters、endElement、endDocument

  7. DOM和SAX的差異-4 SAX如何剖析XML文件2 • 以前面的範例文件為例,SAX讀入的資料如同一個文字流,如下所示: [<hello>] [<message>] [大家好!] [</message>] [<message>] [Say Hello!] [</message>] [</hello>]

  8. SAX的優缺點-1 SAX的優點 • SAX技術是將XML文件視為一個讀取檔案的文字流,在開發應用程式上,其優點如下所示: • 記憶體的使用比較有效率:因為SAX並不會將XML文件完全載入記憶體,所以任何尺寸的XML文件都可以剖析,DOM技術需將整份XML文件載入記憶體,以建立樹狀結構。 • 使用容易:如果應用程式只是取得XML文件的部分XML元素,此時SAX在使用上更加容易。因為SAX不用如同DOM將整份XML文件載入記憶體。 • 速度快:如果應用程式只是在順序讀取XML文件的內容,SAX在處理上將比DOM更有效率。

  9. SAX的優缺點-2 SAX使用上的限制 • SAX技術和DOM使用完全不同的方法剖析XML文件,所以在使用上有一些限制,如下所示: • SAX只能讀取XML內容:SAX技術只能讀取XML文件,但是不能更改XML文件的內容,不同於DOM介面能夠輕易的讀寫XML文件的內容。 • 無法隨機存取XML元素:SAX技術有如讀取文字檔案的內容,XML元素是一個接著一個XML元素以順序方式讀取XML元素,這是無法回頭的,不同於DOM將XML文件視為一個樹狀結構,可以任易取得指定XML元素的資料。

  10. 15-2 使用VB建立SAX應用程式 • SAX應用程式介面 • ContentHandler介面 • ErrorHandler介面 • XMLReader介面 • Attributes介面 • Locator介面

  11. SAX應用程式介面-1 • SAX屬於一種「主動模式剖析器」(Push-model Parser),當SAX剖析XML文件時,SAXXMLReader介面在讀取XML文件時同時觸發一系列事件,SAX就是處理事件的應用程式介面。

  12. SAX應用程式介面-2 • SAX就是處理事件的應用程式介面,主要的介面如下表所示:

  13. ContentHandler介面-1 startDocument方法 • 當開始剖析XML文件時觸發此事件,我們可以建立程序處理此事件,這是ContentHandler介面的第一個方法,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_startDocument() ….. End Sub

  14. ContentHandler介面-2 startElement方法 • 當剖析到每一個XML元素時,處理開始標籤名稱和屬性清單的方法,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_startElement(strNamespaceURI As String, strLocalName As String, strQName As String, ByVal oAttributes As MSXML2.IVBSAXAttributes) ….. End Sub

  15. ContentHandler介面-3 characters方法 • 這個方法取得XML元素內容的文字資料,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_characters(strChars As String) ….. End Sub • 上述程序傳入的參數strChars就是元素的內容,這個方法執行的順序是在startElement和endElement方法間。

  16. ContentHandler介面-4 endElement方法 • 這個方法處理XML元素的結尾標籤名稱,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_endElement(strNamespaceURI As String, strLocalName As String, strQName As String) ….. End Sub • 上述程序的參數strLocalName就是標籤名稱。

  17. ContentHandler介面-5 endDocument方法 • 當SAX剖析器處理到XML文件的最後就觸發此事件,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_endDocument() ….. End Sub

  18. ContentHandler介面-6 processingInstruction方法 • 如果XML文件擁有PI,這個方法就是處理XML文件的PI,Visual Basic的程序,如下所示: Private Sub IVBSAXContentHandler_processingInstruction(strTarget As String, strData As String) ….. End Sub • 上述程序的參數strTarget就是PI目標(PI Target),strData就是值。

  19. ErrorHandler介面-1 • ErrorHandler介面可以追蹤剖析的錯誤,取得錯誤發生時的錯誤資訊,共擁有三種錯誤型態。 • 可回復錯誤(Recoverable errors):物件類別模組的方法,如下所示: Private Sub IVBSAXErrorHandler_error(ByVal oLocator As MSXML2.IVBSAXLocator, strErrorMessage As String, ByVal nErrorCode As Long) ….. End Sub

  20. ErrorHandler介面-2 • 致命錯誤(Fatal errors):物件類別模組的方法,如下所示: Private Sub IVBSAXErrorHandler_fatalError(ByVal oLocator As MSXML2.IVBSAXLocator, strErrorMessage As String, ByVal nErrorCode As Long) ….. End Sub

  21. ErrorHandler介面-3 • 警告訊息(Warnings):物件類別模組的方法,如下所示: Private Sub IVBSAXErrorHandler_ignorableWarning(ByVal oLocator As MSXML2.IVBSAXLocator, strErrorMessage As String, ByVal nErrorCode As Long) ….. End Sub

  22. XMLReader介面-1 • 這個介面提供XML文件的載入和剖析功能,我們並不需要替此介面建立對應的程序,因為這個介面直接由剖析器處理。 XMLReader介面的方法 • XMLReader介面的主要方法,如下表所示:

  23. XMLReader介面-2 XMLReader介面的屬性 • XMLReader介面的屬性,如下表所示:

  24. Attributes介面-1 • 這個介面取得XML元素的屬性清單,我們並不需要替此介面建立對應的程序,因為這個介面直接由剖析器處理。 Attributes介面的方法

  25. Attributes介面-2 Attributes介面的屬性 • Attributes介面的屬性,如下表所示:

  26. Locator介面 • Locator介面提供目前剖析的位置資訊,主要為下列兩個屬性,如下表所示:

More Related