2010-08-18 76 views
0

我正在使用Android SAX解析器來搜索相當大(6MB)的XML文件中的條目。我基本上使用清單8 here中顯示的代碼的衍生物。我有的問題是,如果我的匹配找到了,我該如何停止解析?顯示的代碼繼續解析整個文件的末尾,但我想在此之前停止。這是可能的還是我需要使用SAX以外的東西(例如XmlPullParser?)當發現匹配時從Xml.parse退出

回答

0

那麼DiskCrasher, 每個Sax解析器都會一直工作到結束,但是如果你仍然想在它的中間停止它工作中,您可以隨時檢查條件並使用返回語句。

但是更好的選擇性解析方法是使用XML PullParser,因爲這個解析器一般可以實時工作,並且在不加載整個文件的情況下爲您提供數據。這樣,您可以隨時檢查條件並退出循環,甚至無需使用大內存塊...

希望這對您有幫助!

+0

謝謝,但我不能發出從匿名內部類return語句。 – 2010-08-18 23:54:12

0

當你得到一個匹配時,你可以拋出異常。異常可以捕獲匹配信息並將傳播到原始parse()調用者。捕獲異常並測試它是否基於獲得匹配或真正的解析錯誤並據此進行處理。

1

生成ArithmeticException並捕獲它! if (condition) { int a=1; a/=0; } ...

try { 
    Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler()); 
} 
catch (ArithmeticException e) { 
    return true; 
} 

這是可怕的,但它的工作原理...

+0

只需拋出一個未檢查的異常,就像NullPointer或Arithmetic – Phate 2012-09-30 21:47:08

相關問題