Я анализирую очень простую XML-схему с парсером SAX в Android.
Пример файла будет
<Lists>
<List name="foo">
<Note title="note 1" .../>
<Note title="note 2" .../>
</List>
<List name="bar">
<Note title="note 3" .../>
</List>
</Lists>
The ... представляет больше данных заметки в качестве атрибутов, которые не важны для вопроса.
Я использую синтаксический анализатор SAX для анализа документа и реализую только методы startElement
и 'endElement' HandlerBase для обработки узлов Note и List.
Однако, в некоторых случаях файлы могут быть очень большими и занять некоторое время для обработки. Я хотел бы иметь возможность прервать процесс анализа в любое время (т. Е. Пользователь нажимает кнопку отмены).
Лучший способ, который я придумал, - это генерировать исключение из моего метода startElement при выполнении определенных условий (т. Е. boolean stopParsing
верно).
Есть ли лучший способ сделать это?
Я всегда использовал парсеры стиля DOM, поэтому не совсем понимаю парсер SAX.
И последнее замечание: я запускаю его на Android, поэтому у меня будет запущен Parser в рабочем потоке, чтобы пользовательский интерфейс реагировал. Если вы знаете, как можно безопасно завершить поток во время работы парсера, это также ответит на мой вопрос.