账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
API概观
 

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

浏览人次:【5477】

前言

由于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.1.HK857452CG6STACUKP
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw