Выход из Xml.parse при обнаружении совпадения - PullRequest
0 голосов
/ 18 августа 2010

Я использую парсер Android SAX для поиска записей в довольно большом (6 МБ) XML-файле. Я в основном использую производную кода, показанного в листинге 8 здесь . У меня вопрос, как мне прекратить анализ после того, как мой матч был найден? Показанный код продолжает анализ до конца файла, но я хочу остановиться до этого. Возможно ли это или мне нужно использовать что-то другое, кроме SAX (например, XmlPullParser?)

Ответы [ 3 ]

1 голос
/ 11 января 2012

Создайте 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 голосов
/ 03 февраля 2011

Вы можете выдать исключение, когда получите совпадение.Исключение может содержать информацию о совпадении и будет передано исходной вызывающей программе parse ().Перехватите исключение и проверьте, основано ли оно на получении совпадения или истинной ошибке синтаксического анализа, и выполните соответствующую обработку.

0 голосов
/ 18 августа 2010

Well DiskCrasher, Каждый синтаксический анализатор Sax будет работать до конца, но если вы все еще хотите выйти из него, когда он находится в середине работы, вы всегда можете проверить условие и использовать оператор return.

Но гораздо лучшим способом выборочного разбора было бы использование XML PullParser, так как этот синтаксический анализатор в целом будет работать на лету и выдавать вам данные без загрузки всего файла. Таким образом, вы можете проверить состояние и выйти из цикла в любое время, даже не используя большие куски памяти ...

Надеюсь, это вам как-то полезно !!!

...