歡迎您光臨本站 註冊首頁

使用SAXParser處理XML文檔

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0

在本文中主要就如何用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 { 
private String id = null;
private String name = null;
private String author = null;
private Image image = null;
// 一系列的get和set方法.略去
public String toString() 
{
return "Book [" "ID=" id ", Name=" name ", Author=" author "]";
}
}

接下來我們新建一個類BooksSAXHandler,它擴展了DefaultHandler,用於解析xml.SAX解析是以事件為基礎的,在這裡我們處理三個事件,分別是startElement,endElement以及characters.為了獲取一個element裡面的text值,我們需要程序知道當前在處理那個結點,但僅僅知道結點也是不夠的,可以有同名的結點,故此我們引入currentPath,這樣可以唯一的定位到要處理的結點.下面給出了解析的方法,注意currentPath的用法.


[火星人 ] 使用SAXParser處理XML文檔已經有361次圍觀

http://coctec.com/docs/java/show-post-62203.html