Android: DOM против SAX против синтаксического анализа XMLPullParser? - PullRequest
10 голосов
/ 17 января 2012

Я анализирую XML-документ с помощью SAX Parser.

Я хочу знать, что лучше и быстрее работать с DOM , SAX Parser или XMLPullParser .

Ответы [ 3 ]

7 голосов
/ 17 января 2012

это зависит от того, что вы делаете, если у вас очень большие файлы, вам следует использовать SAX-парсер, так как он будет запускать события и освобождать их, ничего не сохраняется в памяти, а используя SAX-парсер, вы не можете получить доступ к элементу в случайным образом нет пути назад! , но Dom позволяет вам получить доступ к любой части XML-файла, поскольку он хранит весь файл / документ в памяти. надеюсь, что это ответ на ваш вопрос.

, если вы хотите узнать, какой самый быстрый парсер Xerces будет самым быстрым, что вы найдете, и SAX-парсер должен дать вам большую производительность, чем Dom

1 голос
/ 17 марта 2015

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

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

Источник: Android на практике.

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

SAX XML Parser уже доступен в Android SDK.

http://developer.android.com/reference/org/xml/sax/XMLReader.html

, так что к нему легко получить доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...