JDOM是一個(gè)開(kāi)源的專為Java語(yǔ)言提供XML解析功能的項(xiàng)目,項(xiàng)目自2000年春季啟動(dòng),目前其最新版本是1.0,并且被Java Community Process接受為JSR102,當(dāng)時(shí)Sun給予JDOM的肯定評(píng)價(jià)是:In general we tend to prefer to avoid adding new APIs to the Java platform which replicate the functionality of existing APIs. However, JDOM does appear to be significantly easier to use than the earlier APIs, so we believe it will be a useful addition to the platform.可見(jiàn),JDOM確實(shí)是Java語(yǔ)言處理XML的方便工具。
XML解析器是具有如下功能的軟件:可以解析XML文檔,可以按照Schema或者DTD規(guī)則文件修改文檔結(jié)構(gòu)和內(nèi)容,并且可以把XML文檔的內(nèi)容提供給應(yīng)用程序。XML解析器最常見(jiàn)的兩種API是DOM(Document Object Model)和SAX(Simple API for XML)。其中DOM把整個(gè)文檔讀入內(nèi)存,并按照文檔元素的層次結(jié)構(gòu)把它解析為樹(shù)的形式;SAX則以事件的形式來(lái)解析XML文件,不需要把整個(gè)文件讀入內(nèi)存,比如從上往下讀文件的過(guò)程中會(huì)觸發(fā)startElement,endElement等事件。一般來(lái)說(shuō),SAX的效率比DOM高一些。
DOM和SAX是解析XML的最底層的API,各個(gè)廠商、各個(gè)組織的XML解析器,如Xerces Java Parser, JDOM,Microsoft XML Parser等都是使用其中的一種或者兩種API的基礎(chǔ)上,向用戶提供更方便的接口。我們一般不需要直接使用DOM和SAX. 比如JDOM就是集成了DOM和SAX兩種API。下面這個(gè)圖是JDOM的結(jié)構(gòu)圖,摘自JDOM的創(chuàng)始人Jason Hunter2001年在O'reily Open Source大會(huì)上的講稿。可以看出,當(dāng)輸入XML文檔時(shí),JDOM使用SAXBuilder,當(dāng)輸入為DOM樹(shù)的時(shí)候,才用DOMBuilder。

XML解析器是具有如下功能的軟件:可以解析XML文檔,可以按照Schema或者DTD規(guī)則文件修改文檔結(jié)構(gòu)和內(nèi)容,并且可以把XML文檔的內(nèi)容提供給應(yīng)用程序。XML解析器最常見(jiàn)的兩種API是DOM(Document Object Model)和SAX(Simple API for XML)。其中DOM把整個(gè)文檔讀入內(nèi)存,并按照文檔元素的層次結(jié)構(gòu)把它解析為樹(shù)的形式;SAX則以事件的形式來(lái)解析XML文件,不需要把整個(gè)文件讀入內(nèi)存,比如從上往下讀文件的過(guò)程中會(huì)觸發(fā)startElement,endElement等事件。一般來(lái)說(shuō),SAX的效率比DOM高一些。
DOM和SAX是解析XML的最底層的API,各個(gè)廠商、各個(gè)組織的XML解析器,如Xerces Java Parser, JDOM,Microsoft XML Parser等都是使用其中的一種或者兩種API的基礎(chǔ)上,向用戶提供更方便的接口。我們一般不需要直接使用DOM和SAX. 比如JDOM就是集成了DOM和SAX兩種API。下面這個(gè)圖是JDOM的結(jié)構(gòu)圖,摘自JDOM的創(chuàng)始人Jason Hunter2001年在O'reily Open Source大會(huì)上的講稿。可以看出,當(dāng)輸入XML文檔時(shí),JDOM使用SAXBuilder,當(dāng)輸入為DOM樹(shù)的時(shí)候,才用DOMBuilder。