帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
API概觀
 

【作者: 王泳泰】   2000年12月01日 星期五

瀏覽人次:【5474】

前言

由於XML技術的快速發展及各企業相繼使用XML做為資料儲存的架構基礎,為此Java 程式語言的發展廠商Sun Microsystems Inc.(美國昇陽科技)發展了可以讓程式開發工程師使用Java語言來處理以XML格式儲存資料的應用程式開發套件Java API for XML Parsing(JAXP)。


在這個章節中,我們將針對 Sun Microsystems Inc.所開發的Java API for XML Parsing (JAXP) 結構做介紹。


Java API for XML Parsing(JAXP)APIs

Java API for XML Parsing(JAXP)為Sun Microsystems Inc.(美國昇陽科技)所推出的一個應用程式界面套件,它提供了Java APIs讀取、控制運用及產生XM文件的功能並且讓Java程式能與任何一種XML-compliant 解析器完全整合。


在Sun Microsystems Inc.所提供的Java API for XML Parsing (JAXP)程式開發套件中,JAXP 包含在jaxp.jar 的檔案裡。因此,當我們需要用到JAXP的應用程式界面 (API)時,我們必須要在Java程式中加入「import javax.xml.parsers.」,指引編譯器到javax.xml.parsers 的位址找尋我們所需的應用程式界面。


在javax.xml.parsers的套件中,您會發現裡面包含了兩個factory API classes SAXParserFactory、 DocumentBuilderFactory 以及一個 DocumentBuilder API。


SAXParserFactory:為用來定義一個應用程式介面,讓Java程式能夠取得一個SAX (Simple API for XML)剖析器元件來編譯XML文件。


DocumentBuilderFactory:取得一個剖析器,用來產生DOM (Document Object Mode)樹狀形態物件。


DocumentBuilder:定義一個應用程式介面(API)用來產生DOM物件。


SAXParserFactory及DocumentBuilderFactory這兩個factory APIs允許程式開發工程師在所開發的Java程式中直接插入使用其他廠商所提供的XML Implementation,而不須更改原始程式,省去了許多麻煩及減少了程式開發時間。


SAX及DOM概論

SAX(表一)以及DOM APIs是由XML-DEV group和W3C (World Wide Web Consortium)所分別訂定的應用程式介面標準。所有關於SAX及DOM APIs的函式庫(Libraries)都包括在Sun Microsystems Inc.的Java API for XML Parsing (JAXP)程式開發套件的parser.jar檔案中。



《表一 SAX解析器定義表》
《表一 SAX解析器定義表》

Simple API for XML (SAX)在XM文件被解析時提供一個event-driven的界面,用來做為XML解析時應用程式的「callback」通告。


SAX 2.0 API的相關文件可參考http://www.megginson.com/SAX/index.html。


DOM API為目前最容易使用的界面。DOM API以讓人一目瞭然的樹狀形態來顯示物件。使用者並可利用DOM API來控制所包含的物件,以達到與使用者互動的目的。


DOM API的相關文件可參考http://www.w3.org/TR/REC-DOM-Level-1/


在SAX與DOM APIs的比較之下, 由於DOM會先取讀完整的XML結構並以樹狀形態儲存物件於記憶體中,所以需要耗用比SAX 更多的 CPU效能及記憶體。因此在伺服器主機端 (Server side),建議最好是使用SAX API以免伺服器的整體效能被減低。


SAX APIs

SAX API的結構圖如(圖一)。上端的SAXParserFactory 為 SAX 解析器產生實體。 XML 文件由SAX Parser的左方輸入,經過SAX Parser解析後,解析器將依照文件需求呼叫由Document Handler、Error Handler、DTD Handler及Entity Resolver界面所訂定的callback method。


《圖一 SAX API的結構圖》
《圖一 SAX API的結構圖》

下面為SAX API主要元件的概要:


SAXParserFactory:javax.xml.parsers.SAXParserFactory主要為用來產生SAX解析器。


Parser:org.xml.sax.Parser界面負責訂定methods(例如: setDocumentHandler)及解析器 (URL)來解析文件。這個界面是由com.sun.xml.parser套件中的Parser以及 ValidatingParser classes來呼叫執行。


DocumentHandler:當XML tag經過驗證後,startDocument、endDocument、startElement、 及endElement methods將會被呼叫。這個界面並且定義characters及 processingInstruction methods。當解析器在XML element 中讀到文字(text) 或inline processing指令時,characters 或processingInstruction method 將會被呼叫。


ErrorHandler:如果在解析時發生錯誤,error、fatalError或 warning method將會被呼叫。 預設的 error handler 將會 throws 一個 exception 給 fatal errors 並且忽略其他的errors(其中包含了validation errors)。所以,如果您想要正確的handle error,您就要必須提供自己的error handler給解析器。


DTDHandler:這一個界面是由com.sun.java.xml的DtdEventListener所延伸出來的。這個界面所訂定的method 在 DTD資訊處理時會被呼叫。


EntityResolver:當解析器須要透過URI確認外部資料時,resolveEntity method則會被呼叫。在大部份的情況下,URI可以使用一般的URL來指定一個文件的位置,但是在某一些特殊情況下,文件的位置就必須要使用URN來表示。如果 URN 被使用,EntityResolver將使用URN替代URL來找尋所在位置文件。


SAX APIs 並且訂定了一些其他界面讓使用者在開發 SAX 應用程式時能夠使用, 其中並包含了一些有用的工具套件(Utility Package)。(表二)、(表三)為這些界面及套件的介紹:



《表二  SAX 界面{org.xml.sax}》
《表二  SAX 界面{org.xml.sax}》

《表三  工具套件 {com.sun.xml.util}》
《表三  工具套件 {com.sun.xml.util}》

Document Object Model (DOM) APIs

如(圖二),我們使用左上方的javax.xml.parsers.DocumentBuilderFactory class 來取得 DocumentBuilder的實體,然後使用DocumentBuilder的實體依據DOM的規範來產生圖中右下方的DOM 文件。



《圖二 》
《圖二 》

我們可以使用 builder 的 newDocument method來產生一個空的文件來implement org.w3c.dom.Document 的介面。 或者,我們也可以使用 builder 的任何一個剖析 methods 來從現存的 XML 資料中產生出一份文件,結果就如同圖二右下方的 DOM 樹狀結構。


Document Object Model implement 定義在(表四)的套件中。


《表四  Document Object Model implement 套件敘述》
《表四  Document Object Model implement 套件敘述》

結論

由於XML 的快速興起,各資訊軟體企業紛紛推出能夠接受及處理 XML 格式資料的產品。 對於使用 Sun Java SDK來開發程式的使用者, Sun Microsystems Inc. 所提供的 Java API for XML Parsing (JAXP) 界面讓程式開發者能夠容易及快速的開發 XML 應用軟體程式來存取及處理以 XML 格式儲存的資料。


(作者為安際公司XML科技中心軟體工程師,如對本文有任何疑問,歡迎來信洽詢:xml@anjes.com.tw)


相關文章
SOAP - 讓程式暢行於網路間
打造Web行動應用系統平台
數位家庭之互通關鍵 - UPnP應用分析
網頁發展的未來 – XHTML 2.0
小世界的朋友網路 - FOAF
comments powered by Disqus
相關討論
  相關新聞
» 台達推出5G ORAN小型基地台 實現智慧工廠整合AI應用
» 歐洲航太技術展在德國盛大展開,全球吸睛 鐳洋推出衛星通訊整合方案,目標搶佔龐大的歐洲衛星商機
» 經濟部促成3GPP大會來台爭話語權 大廠共商5G/6G技術標準
» 經濟部支持跨國研發有成 台歐雙方分享B5G~6G規劃
» 達梭系統收購IQMS擴展3DEXPERIENCE平台


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.128.199.162
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw