jdbc案例分頁條件查詢源碼筆記stax_第1頁
jdbc案例分頁條件查詢源碼筆記stax_第2頁
jdbc案例分頁條件查詢源碼筆記stax_第3頁
jdbc案例分頁條件查詢源碼筆記stax_第4頁
jdbc案例分頁條件查詢源碼筆記stax_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、StAXThe Streaming API for XML (StAX)王健StAX:This is the homepage for the StAX Reference Implementation (RI). StAX is a standard XML processing API that allows you to stream XML data from and to your application. This StAX implementation is the standard pull parser(拉解析) implementation for JSR-173 spec

2、ification. Features of the Reference Implementation:Small memory footprintImplementation of most core features: non-validating DTD-aware parser and serializerOpen Source (Apache License (AL) 2.0)Features of StAX API:The standard pull parser interface (included in JDK 1.6,(已經(jīng)包含到j(luò)dk1.6里面) downloadable

3、 separately for 1.4, 1.5) StAX 概述 從一開始,Java API for XML Processing (JAXP) 就提供了兩種方法來處理 XML:文檔對象模型(DOMDocument Object Model文檔對象模型)方法是用標(biāo)準(zhǔn)的對象模型表示 XML 文檔;Simple API for XML (SAX簡單XML訪問接口) 方法使用應(yīng)用程序提供的事件處理程序來處理 XML。JSR-173 提出了一種面向流的新方法:Streaming API for XML (StAX)。其最終版本于 2004 年 3 月發(fā)布,并成為了 JAXP 1.4(將包含在即將發(fā)布

4、的 Java 6 中)的一部分。 如其名稱所暗示的那樣,StAX 把重點(diǎn)放在流上。實(shí)際上,StAX 與其他方法的區(qū)別就在于應(yīng)用程序能夠把 XML 作為一個(gè)事件流來處理。將 XML 作為一組事件來處理的想法并不新穎(事實(shí)上 SAX 已經(jīng)提出來了),但不同之處在于 StAX 允許應(yīng)用程序代碼把這些事件逐個(gè)拉出來,而不用提供在解析器方便時(shí)從解析器中接收事件的處理程序。 基本原理 應(yīng)用程序首先必須獲得一個(gè)具體的XMLInputFactory。根據(jù)傳統(tǒng)的 JAXP 風(fēng)格,要用到抽象工廠模式;XMLInputFactory類提供了靜態(tài)的newInstance(或是newFactory)方法,它負(fù)責(zé)定位和實(shí)

5、例化具體的工廠。配置該實(shí)例可設(shè)置定制或者預(yù)先定義好的屬性(其名稱在類 XMLInputFactory 中定義)。最后,為了使用基于指針的 API,應(yīng)用程序還要通過調(diào)用某個(gè)createXMLStreamReader方法獲得一個(gè)XMLStreamReader。如果要使用基于事件迭代器的 API,應(yīng)用程序就要調(diào)用createXMLEventReader方法獲得一個(gè)XMLEventReader 為什么使用 StAX? 開始學(xué)習(xí)一種新的處理 XML 的 API 之前,可能要問是否值得這樣做。事實(shí)上,StAX 所采用的基于拉的方法和其他方法相比有一些突出的優(yōu)點(diǎn)。首先,不管使用哪種 API 風(fēng)格,都是應(yīng)用程

6、序調(diào)用讀取器(解析器)而不是相反。通過保留解析過程的控制權(quán),可以簡化調(diào)用代碼來準(zhǔn)確地處理它預(yù)期的內(nèi)容。或者發(fā)生意外時(shí)停止解析。此外,由于該方法不基于處理程序回調(diào),應(yīng)用程序不需要像使用 SAX 那樣模擬解析器的狀態(tài)。StAX 仍然保留了 SAX 相對于 DOM 的優(yōu)點(diǎn)。通過把重心從結(jié)果對象模型轉(zhuǎn)移到解析流本身,從理論上說應(yīng)用程序能夠處理無限的 XML 流,因?yàn)槭录逃械呐R時(shí)性,不會在內(nèi)存中累積起來。對于那些使用 XML 作為消息傳遞協(xié)議而非表示文檔內(nèi)容的那些應(yīng)用程序尤其重要,比如 Web 服務(wù)或即時(shí)消息應(yīng)用程序。比方說,如果只是將其轉(zhuǎn)換成特定于應(yīng)用程序的對象模型然后就將其丟棄,那么為 Web 服

7、務(wù)路由器 servlet 提供一個(gè) DOM 就沒有多少用處。使用 StAX 直接轉(zhuǎn)化成應(yīng)用程序模型效率更高。對于 Extensible Messaging and Presence Protocol(XMPP)客戶機(jī),根本不能使用 DOM,因?yàn)?XMPP 客戶機(jī)/服務(wù)器流是隨著用戶輸入的消息實(shí)時(shí)生成。等待流的關(guān)閉標(biāo)簽(以便最終建立 DOM)就意味著等待整個(gè)會話結(jié)束。通過把 XML 作為一系列的事件來處理,應(yīng)用程序能夠以最合適的方式響應(yīng)每個(gè)事件(比如顯示收到的即時(shí)消息等等)。由于其雙向性,StAX 也支持鏈?zhǔn)教幚?,特別是在事件層上。接收事件(無論什么來源)的能力被封裝在 XMLEventCons

8、umer(XMLEventWriter 的擴(kuò)展)接口中。因此,可以模塊化地編寫應(yīng)用程序從 XMLEventReader(也是一個(gè)普通的迭代器,可以按迭代器處理)讀取和處理 XML 事件、然后傳遞給事件消費(fèi)者(如果需要可以進(jìn)一步擴(kuò)展處理鏈)。在第 2 部分將看到,也可使用應(yīng)用程序提供的篩選器(實(shí)現(xiàn)了 EventFilter 接口的類)來定制 XMLEventReader 或者使用 EventReaderDelegate 修飾已有的 XMLEventReader??偠灾?,和 DOM 以及 SAX 相比,StAX 使應(yīng)用程序更貼近底層的 XML。使用 StAX,應(yīng)用程序不僅可以建立需要的對象模型(

9、而不需要處理標(biāo)準(zhǔn) DOM),而且可以隨時(shí)這樣做,而不必等到解析器回調(diào)。下一節(jié)將深入討論基于指針的 API 以及如何有效地使用它處理 XML 流。StAX VS SAX:StAX比SAX更加簡單易用。StAX可以讀寫XML文檔,而SAX只可以讀文檔。下圖上各種解析方式的對比:快速示例:以下是一段基本的XML文件:快速示例:使用StAX對文進(jìn)行解析:快速示例:幾個(gè)關(guān)鍵點(diǎn):XMLStreamReader.hasNext() 判斷是否還有下一個(gè)節(jié)點(diǎn),如元素或是文本。Int next = XMLStreamReader.next() 返回一個(gè)整數(shù),確定是何種元素。XMLStreamReader.getL

10、ocalName() 返回元素的節(jié)點(diǎn)名稱。XMLStreamReader.getText() 返回文本。XMLStreamReader.getAttributeValue(nameSpace,attName) 返回屬性值。使用XMLStreamReader解析 XML 示例2:使用 StAX 編寫 XML 文檔/* Rose*/Testpublic void testB() throws Exception XMLOutputFactory factory = XMLOutputFactory.newFactory();XMLStreamWriter writer = factory.createXMLStreamWriter(System.out);writer.writeStartDocument(UTF-8, 1.0);/文檔開始writer.writeStartElement(users);/文本的根元素writer.writeStartElement(user);writer.writeAttribu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論