第 15 章 SAX程式設計.

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

猜谜语 有个小娃娃,真是没 礼貌。 见到小树摇一摇,吓 得树叶哇哇叫。 见到小花逗一逗,摘 去她的太阳帽。 没人和它交朋友,只 好自已到外处跑。
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
1 第 10 章 字串. 2 字串的產生  其中 StringBuffer 與 StringBuilder 類別會在 10-3 節中介 紹。底下就來看看如何透過前 4 個建構方法產生字串: 這 是 個 測 試 字 串 4ED6 test 4ED6 test[0] test[1] test[2] test[3]
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
单元二:面向对象程序设计 任务二:借书卡程序设计.
黄帝内经 内经教研室 王黎.
职官与科举 职官:在国家机构中担任一定职务的官吏,这里面有职官的名称、职权范围和品级地位等方面的内容。
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
花开有日 芬芳天下 “国培计划(2012)” ——幼儿园骨干教师远程培训项目 山东幼儿园教师8班第4期简报 主办人:张瑞美     
《卖火柴的小女孩》 《海的女儿》 你 认 识 这 些 图 片 的 故 事 吗 《丑小鸭》 《拇指姑娘》 它们都来自于哪位作家笔下?
C语言程序设计 李伟光.
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
民主國家的政府體制 我國的中央政府體制 我國中央政府的功能 地方政府組織與功能
銷售與顧客關係管理 巫立宇.邱志聖 著.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
四資二甲 第三週作業 物件導向程式設計.
20、豆花庄的小家伙们.
數位芝麻網路公司( 軟體工程師
OrientX4.0系统开发报告 XML Group July 25, 2009.
财务管理.
CH11 心理疾病 李志鴻.
华 夏 之 祖 第 3 课.
法學緒論第六單元:法律適用 設計課程︰ 財經法律系 --楊東連 法學緒論-6.
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
CH1 . 集 合 与 命 题.
政府扶持资金通览 技术改造篇.
Ch19 創業精神 管理學:整合觀點與創新思維3/e.中山大學企管系 著.前程文化 出版.
第二章 JAVA语言基础.
以考试说明带动二轮复习 福州第三中学 张璐.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
第8章 字串與陣列 8-1 字串處理 8-2 一維陣列的處理 8-3 建立多維陣列 8-4 不規則陣列與參數傳遞 8-5 陣列排序與搜尋.
第三章 控制结构.
跨越海峡的生命桥.
本科生医保资料的提交.
程式設計實作.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
Java基础 JavaSE异常.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
第8章 Android内容提供者(ContentProvider)应用
Java 程式設計 講師:FrankLin.
統計圖表的製作.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
8. 使用 Java 语言对 XML 数据进行解析 Java 语言和 XML 数据格式都被认为是过去数十年中最为重要的 IT 技术之一。
郑晟 昆明理工大学 云南省计算机技术应用重点实验室
异常及处理.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
Java變數 2014/6/24.
利用JAVA DOM 進行DTD驗證XML文件
第十二章 学习使用Ant Apache Ant是一个基于Java的构建工具,它可以 会构建多种项目,但是目前主要被用于Java项目 的构建, Ant是用Java语言编写,可以在多个操 作系统中运行,目前在绝大部分的Java开源项目 中,都选择使用Ant作为构建项目的工具,Ant已 经成为Java开源项目构建的事实标准,而且越来.
保留字與識別字.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
OrientX3.0及其改进之处 XML小组.
畢業資格審查系統 操作步驟說明.
第二章 Java语法基础.
新制退休實務計算說明- 現職人員退休範例說明
第二章 Java基本语法 讲师:复凡.
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
第15章 SAX2建立XML應用程式 15-1 SAX2的基礎 15-2 使用VB建立SAX應用程式 15-3 應用實例:顯示XML文件
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
方格紙上畫正方形.
第2章 Java语言基础.
C++程序语言设计 Chapter 14: Templates.
Presentation transcript:

第 15 章 SAX程式設計

簡介SAX - 什麼是SAX SAX的英文全名為Simple API for XML,是一組簡單的應用程式介面(API),將運用事件回呼機制,執行XML文件的剖析。 SAX目前的版本為2.0,也是本章介紹SAX所依循的版本。 有關SAX運作的機制,請參考下一節(15-1-2節),至於SAX的最新資訊,則請您到http://www.saxproject.org/看看。 至於Java執行環境的建立請參考附錄E-1的說明,xerces剖析器的下載與安裝,則請參考14-1-2節的說明。

簡介SAX - SAX的運作機制 以SAX機制處理XML文件的程式裡,有兩個重要的主角: 剖析XML文件的SAX剖析器 處理XML文件的處理器(handler)

簡介SAX - 瞭解事件回呼機制 範例的運作機制,如下述: STEP 1、完成BitcParse物件的建立 STEP 2、建立實做SAXHandler介面的myHandler處理器物件 STEP 3、將myHandler物件設定給BitcParse物件 STEP 4、執行剖析 STEP 5、 BitcParse物件透過SAXHandler介面,呼叫myHandler物件的方法

簡介SAX - 瞭解事件回呼機制 整個過程表達如下圖。

簡介SAX - 瞭解事件回呼機制 觀察執行結果,將可以瞭解到整個回呼機制的執行過程,並請留意介面在以下兩個問題所扮演的角色: 剖析器模擬類別如何取得回應事件的處理器物件 剖析器類別如何回呼處理器物件的方法

SAX程式設計- Java的SAX程式設計 在Java中,運用SAX剖析器處理XML文件的步驟如下所述: STEP 1、建立SAX剖析器物件 STEP 2、建立實做org.xml.sax套件內介面的處理器類別。 STEP 3、將處理器物件設定給SAX剖析器物件 STEP 4、將欲剖析的XML文件傳入SAX剖析器物件。 STEP 5、 SAX剖析器在處理XML文件的過程,將呼叫處理器物件回應剖析過程中所觸發事件的方法。

SAX程式設計- Java的SAX程式設計 整個過程表達如下圖。

SAX程式設計 - 運用SAX剖析器剖析XML文件 欲使用Apache Xerces的SAX剖析器時,需運用import指令引用,敘述如下: 由於剖析器物件將設定由類型為XMLReader介面的物件引用。因此,還必須引用org.xml.sax套件。 XMLReader介面為使用事件回呼機制,讀取XML文件的介面。接著,完成剖析器物件的建立。

SAX程式設計 - 運用SAX剖析器剖析XML文件 欲剖析XML文件時,則可呼叫parse()方法,並傳入欲剖析的檔案名稱。以下敘述將完成book.xml文件的剖析。

SAX程式設計 - 內容處理器的建立 定義內容處理器類別時,必須實做定義於org.xml.sax套件內的ContentHandler介面。因此,撰寫時,必須先完成套件與介面的引用。 由於ContentHandler介面內定義的事件回應方法,將丟出類型為SAXException的例外物件,因此,在程式內亦必須完成引用。

SAX程式設計 - 內容處理器的建立 欲將實做ContentHandler介面的自訂內容處理器物件,註冊給SAX剖析器時,必須呼叫XMLReader介面的setContentHandler,語法如下: XMLReader物件.setContentHandler( ContentHandler 內容處理器) 無回傳值。

SAX程式設計 - 內容處理器的建立 文件定位器的設定 設定文件定位器的方法為setDocumentLocator()方法,其介面如下: public void setDocumentLocator(Locator locator) setDocumentLocator()方法是剖析XML文件時,內容處理器第1個被呼叫的方法,用於設定Locator物件,其型別為org.xml.sax套件內的Locator介面。 在剖析XML文件的過程中,欲取得目前剖析的位置時,可以透過呼叫Locator物件之方法的方式得知。

SAX程式設計 - 內容處理器的建立 可供呼叫的方法說明如下表:

SAX程式設計 - 內容處理器的建立 文件剖析的開始與結束 當開始剖析XML文件時,SAX剖析器將呼叫startDocument()方法,介面如下: public void startDocument() throws SAXException 完成XML文件的剖析時,則將呼叫endDocument()方法,這個方法也是SAX剖析器剖析XML文件最後一個呼叫的方法,介面如下: public void endDocument() throws SAXException

SAX程式設計 - 內容處理器的建立 名稱空間 自SAX 2.0開始,增加了對名稱空間的支援,當開始處理名稱空間時,將呼叫startPrefixMapping()方法。 完成名稱空間的處理時,則將呼叫endPrefixMapping()方法。介面說明如下: public void startPrefixMapping( String prefix, String uri) throws SAXException public void endPrefixMapping( String prefix) throws SAXException

SAX程式設計 - 內容處理器的建立 處理指令 當剖析到XML文件內傳遞給應用程式的處理指令時,將呼叫processingInstructiong()方法,其介面如下: public void processingInstruction( String target, String data) throws SAXException

SAX程式設計 - 內容處理器的建立 元素 開始剖析XML文件內的元素時,SAX剖析器將呼叫startElement()方法。結束元素的剖析,則呼叫endElement。介面說明如下: public void startElement( String namespaceURI, String localName, String qName, Attributes atts) throws SAXException public void endElement (String namespaceURI, String localName, String qName) throws SAXException

SAX程式設計 - 內容處理器的建立 元素 開始剖析XML文件內的元素時,SAX剖析器將呼叫startElement()方法。結束元素的剖析,則呼叫endElement。介面說明如下: public void startElement( String namespaceURI, String localName, String qName, Attributes atts) throws SAXException public void endElement (String namespaceURI, String localName, String qName) throws SAXException

SAX程式設計 - 內容處理器的建立 欲取得屬性的個數時,可呼叫getLength()方法,語法如下: Attributes物件.getLength(); 回傳值型態為int。 欲取得屬性名稱時,可呼叫getLocalName()方法,語法如下: Attributes物件.getLocalName(int i); 回傳值型態為String。 欲取得屬性值時,可呼叫getValue()方法,語法如下: Attributes物件.getValue(int i); 回傳值型態為String。

SAX程式設計 - 內容處理器的建立 元素資料 處理元素資料時,將呼叫characters()方法,其介面如下: public void characters( char ch[], int start, int length) throws SAXException

SAX程式設計 - 內容處理器的建立 空白字元 剖析器遇到空白字元時,將呼叫characters()方法,其介面如下: public void ignorableWhitespace( char ch[], int start, int length) throws SAXException

SAX程式設計 - 內容處理器的建立 被忽略的實體 對於某些不需要驗證XML文件的剖析器,在剖析XML文件的過程中,可能略過實體宣告。因此,SAX 2.0提供了skippedEntity()方法,讓實體被略過時,透過此方法的呼叫,可取得略過實體的名稱。介面說明如下: public void skippedEntity(String name) throws SAXException

SAX程式設計 - 錯誤處理器的建立 對於XML文件錯誤的處理,則將交由實做ErrorHandler介面的錯誤處理器。 當錯誤處理器完成錯誤的處理後,SAX剖析器最後將呼叫內容處理器的endDocument()方法,結束XML文件的處理。 定義錯誤處理器類別時,必須實做定義於org.xml.sax套件內的ErrorHandler介面。因此,撰寫時,必須先完成該介面與套件的引用。

SAX程式設計 - 錯誤處理器的建立 由於SAX剖析器呼叫ErrorHandler介面內定義的事件回應方法,將傳入類型為SAXParseException的例外物件,因此,在程式內亦必須完成引用。 欲將實做ErrorHandler介面的自訂錯誤處理器物件註冊給SAX剖析器時,必須呼叫XMLReader介面的setErrorHandler,語法如下: XMLReader物件.setErrorHandler( ErrorHandler 錯誤處理器) 無回傳值。

SAX程式設計 - 錯誤處理器的建立 警告訊息 當SAX剖析器剖析XML文件時,發出警告訊息,將由ErrorHandler介面的warning()方法回應,其介面如下: public void warning( SAXParseException saxpe) 錯誤訊息 當SAX剖析器剖析XML文件時,發出錯誤訊息,將由ErrorHandler介面的error()方法回應,其介面如下: public void error(SAXParseException saxpe)

SAX程式設計 - 錯誤處理器的建立 嚴重錯誤訊息 當SAX剖析器剖析XML文件時,發出嚴重錯誤訊息(又稱不可回復的錯誤),將由ErrorHandler介面的fatalError()方法回應,其介面如下: public void fatalError(SAXParseException saxpe)

SAX程式設計 - 錯誤處理器的建立 透過SAXParseException物件取得錯誤訊息資料 當SAX剖析器發出錯誤訊息時,呼叫錯誤處理的各種方法時,均會傳入包含錯誤訊息的SAXParseException例外物件。

SAX程式設計 - 錯誤處理器的建立 下表為SAXParseException例外類別用於取得錯誤訊息的方法。

SAX程式設計 - 以繼承DefalutHandler類別建立的內容處理器 org.xml.sax套件提供DefaultHandler類別,讓程式設計師可透過繼承的方式,建立各種處理器。 在DefaultHandler類別內,已經完成SAX剖析器所需要的四種處理器介面所定義方法的實做。 程式設計師只要以繼承DefaultHandler類別的方式,建立自訂處理器類別,並僅需要針對想要處理的部份,透過重載(overriding)方法的機制,完成XML文件的處理。 當然那些自訂處理器類別沒有重載的方法,SAX剖析器呼叫時,便將由DefaultHandler類別定義的方法回應。

SAX程式設計 - 以繼承DefalutHandler類別建立的內容處理器 欲使用DefaultHandler類別時,必須運用import敘述完成類別的引用。