日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

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

  一、 推分析之于拉分析

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

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

  2. 拉分析的代碼更簡(jiǎn)單并且它比推分析有更少的庫(kù)。

  3. 拉分析客戶端能同時(shí)讀多個(gè)XML文檔。

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

  二、 了解StAX

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

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

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

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

  三、 初步安裝

  如果你正在使用JDK 6.0,那么默認(rèn)情況下,StAX API位于Classpath中。如果你在使用JWSDP 1.6,請(qǐng)把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實(shí)現(xiàn)JAR。


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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多