2011-04-18 74 views
5

是否有任何理由爲什麼我應該使用XMLReader與SAXParser?我很看到這種用法有很多:Android:爲什麼使用XMLReader?

 sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 
     LoginContentHandler uch = new LoginContentHandler(); 
     xr.setContentHandler(uch); 
     xr.parse(new InputSource(in)); 

我一直使用的解析器是這樣的:

 sp = spf.newSAXParser(); 
     DefaultHandler dh = new LoginContentHandler(); 
     sp.parse(in, dh); 

有什麼特別的原因嗎?只是想知道,因爲我的方式更短,我真的不明白爲什麼我應該使用XMLReader。

+0

樹VS事件的閱讀基礎,我相信:http://www.saxproject.org/event.html – 2011-04-21 12:45:34

+0

並非總是基於事件的SAX? – networkprofile 2011-04-21 12:53:45

+1

XMLreader應該將文件/流作爲樹加載到內存中: '最後,記住有可能使用基於事件的API構造分析樹,並且可以使用事件基於API的API遍歷內存樹。玩得開心!' – 2011-04-22 02:28:30

回答

5

所以要回答這個問題。

使用XMLReader的人假定有足夠的內存將文件存儲爲樹對象,並且能夠在Log(n)時間遍歷它進行搜索。

另一方面,直接使用SAX將意味着您使用的是基於事件的插件,這將在n時間,但應該留下少得多的內存足跡。

這是在空間和速度之間的選擇。

注意到這個from SAX's own page: