电竞比分网-中国电竞赛事及体育赛事平台

分享

在JDK 6.0中基于StAX分析XML數(shù)據(jù)

 bluecrystal 2006-07-23
J2EE/XML開發(fā)者通常都是使用文檔對象模型(DOM)API或簡單的API for XML(SAX) API來分析XML文檔。然而,這些API都有其缺點。其中,DOM API的缺點之一是消耗大量的內(nèi)存,因為在該XML文檔可以被導(dǎo)航之前,必須創(chuàng)建一個完整的XML文檔的內(nèi)存結(jié)構(gòu)。而SAX API的缺點在于,它實例了一種推分析模型API,其中分析事件是由分析器生成的。比較之下,StAX則是基于一種拉分析模型。在本文中,你將首先創(chuàng)建你自己的XML文檔,然后學(xué)習使用各種不同方法來對之進行分析;最后,我們使用事件生成的StAX拉方法。

  一、 推分析之于拉分析

  比較于推分析,拉分析具有如下一些優(yōu)點:

  1. 在拉分析中,事件是由分析應(yīng)用程序生成的,因此把分析規(guī)則提供到客戶端而不是分析器。

  2. 拉分析的代碼更簡單并且它比推分析有更少的庫。

  3. 拉分析客戶端能同時讀多個XML文檔。

  4. 拉分析允許你過濾XML文檔并且跳過分析事件。

  二、 了解StAX

  針對于XML的流式API(StAX),是在2004年3月的JSR 173規(guī)范中引入,這是一種針對XML的流式拉分析API。StAX是JDK 6.0提供的一種新特征,你可以從此處下載它的測試版本試用。

  一個推模型分析器不斷地生成事件,直到XML文檔被完全分析結(jié)束。但是,拉分析由應(yīng)用程序進行調(diào)整;因此,分析事件是由應(yīng)用程序生成的。這意味著,使用StaX,你可以推遲分析-在分析時跳過元素并且分析多個文檔。在使用DOM API的時候,你必須把整個的XML文檔分析成一棵DOM結(jié)構(gòu),這樣也就降低了分析效率。而借助于StAX,在分析XML文檔時生成分析事件。有關(guān)于StAX分析器與其它分析器的比較在此不多介紹。

  StAX API的實現(xiàn)是使用了Java Web服務(wù)開發(fā)(JWSDP)1.6,并結(jié)合了Sun Java流式XML分析器(SJSXP)-它位于javax.xml.stream包中。XMLStreamReader接口用于分析一個XML文檔,而XMLStreamWriter接口用于生成一個XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的光標機制形成對照。本教程將基于JDK 6.0中的StAX實現(xiàn)來完成對一個XML文檔的分析。

  其實,StaX僅僅是JDK 6.0所提供的XML新特征之一。新的JDK 6.0還提供了對針對于XML-Web服務(wù)的Java架構(gòu)(JAX-WS)2.0,針對于XML綁定的Java API(JAXB) 2.0,XML數(shù)字簽名API的支持,甚至還支持SQL:2003 ‘XML‘數(shù)據(jù)類型。

  三、 初步安裝

  如果你正在使用JDK 6.0,那么默認情況下,StAX API位于Classpath中。如果你在使用JWSDP 1.6,請把JWSDP 1.6 StAX API添加到classpath中。這需要把<jwsdp-1.6>\sjsxp\lib\ jsr173_api.jar和<jwsdp-1.6>\sjsxp\lib\sjsxp.jar添加到CLASSPATH變量中。在<jwsdp-1.6>目錄下安裝JWSDP 1.6。Jsr173_api.jar相應(yīng)于JSR-173 API JAR,Sjsxp.jar相應(yīng)于SJXSP實現(xiàn)JAR。


作者的其他文章
more..
其他相關(guān)文章

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多