Один из аспектов, по которому можно классифицировать различные виды синтаксических анализаторов, заключается в том, нужно ли им загружать весь XML-документ в память заранее.Парсеры, основанные на объектной модели документов (DOM), делают это: они анализируют XML-документы в древовидную структуру, которую затем можно просмотреть в памяти для считывания ее содержимого.Это позволяет вам перемещаться по документу в произвольном порядке и приводит к появлению некоторых полезных API-интерфейсов, которые можно запускать поверх DOM, таких как XPath, язык запросов пути, который был специально разработан для извлечения информации из деревьев.Использование DOM само по себе не очень полезно, потому что его API неуклюж, и дорого всегда читать все в память, даже если вам это не нужно.Следовательно, синтаксические анализаторы DOM в большинстве случаев не являются оптимальным выбором для анализа XML на Android.
Существует класс синтаксических анализаторов, которым не требуется загружать документ заранее.Эти парсеры основаны на потоке , что означает, что они обрабатывают XML-документ, все еще читая его из источника данных (Интернета или диска).Это подразумевает, что у вас нет произвольного доступа к дереву XML, как с DOM, потому что не поддерживается внутреннее представление документа.Потоковые парсеры можно далее отличать друг от другаСуществуют push-парсеры , которые при потоковой передаче документа обратятся к вашему приложению при обнаружении нового элемента.SAX парсеры попадают в этот класс.Затем есть парсеры, которые больше похожи на итераторы или курсоры: здесь клиент должен явно запросить следующий элемент для извлечения.
Источник: Android на практике.