在本文中主要就如何用SAX解析xml文檔進行說明.
要解析的xml片段如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Books> <Book id="8542f26f-80d4-4b7d-ab25-f80f72a852ef"> <name id="201"> <strings> <entry> <key>en_US</key> <value> thinking in Java</value> </entry> </strings> </name> <Author> <entry> <key>en_US</key> <value>Tom</value> </entry> </Author> <icon> <url>think_java.PNG</url> </icon> </Book> ... </Books> |
應用程序想從這個xml文檔中讀出各個book,並且需要提供查詢功能,即給定書的id,能夠找到作者和書名.
當然,用jdom是很簡單的方式,不過如果我們讀到的是一個stream,並且比較大,那麼我們最好用SAXParser,不需要把整個xml文檔裝入內存.
首先,我們建立一個Book類,保存book相關的信息.
public class Book { public String toString() |
接下來我們新建一個類BooksSAXHandler,它擴展了DefaultHandler,用於解析xml.SAX解析是以事件為基礎的,在這裡我們處理三個事件,分別是startElement,endElement以及characters.為了獲取一個element裡面的text值,我們需要程序知道當前在處理那個結點,但僅僅知道結點也是不夠的,可以有同名的結點,故此我們引入currentPath,這樣可以唯一的定位到要處理的結點.下面給出了解析的方法,注意currentPath的用法.
[火星人 ] 使用SAXParser處理XML文檔已經有361次圍觀