1
我正在用Android中的SAX解析器解析一個非常簡單的XML模式。中止SAX解析中間文檔?
一個例子文件將是
<Lists>
<List name="foo">
<Note title="note 1" .../>
<Note title="note 2" .../>
</List>
<List name="bar">
<Note title="note 3" .../>
</List>
</Lists>
的......代表着音符數據是,不屬於重要質疑屬性。
我使用SAX解析器來解析文檔,並僅實現startElement
和HandlerBase的'endElement'方法來處理Note和List節點。
但是,在某些情況下,文件可能非常大,需要一些時間來處理。我希望能夠隨時中止解析過程(即用戶按取消按鈕)。
我想出的最好辦法是在滿足特定條件時(即boolean stopParsing
爲真),從我的startElement方法拋出異常。
有沒有更好的方法來做到這一點?
我一直使用DOM風格的解析器,所以我不完全理解SAX解析器。
最後一點需要注意的是,我在Android上運行這個工具,因此我將在工作線程上運行Parser以保持UI的響應。如果你知道如何在分析器運行時安全地殺死線程,那麼也可以回答我的問題。
看起來不錯。我現在唯一需要弄清楚的是如何在工作線程中停止它。 – CodeFusionMobile 2010-04-05 19:32:50
事件更好,請嘗試使用Stax(javax.xml.stream),因爲它是標準的pull解析器API,並且impl包含在JDK 1.6中(或者可以在外部使用Woodstox) – StaxMan 2011-11-06 18:38:35