XmlPullParser на самом деле не является синтаксическим анализатором, это интерфейс к типу синтаксического анализатора, называемого синтаксическим анализатором «pull».
Функция getResources (). GetXml () возвращает реализацию XmlPullParser для «синтаксического анализа»."Ресурсы XML.Это не настоящий синтаксический анализатор XML - фактически исходный XML-файл был проанализирован во время сборки, прежде чем он был встроен в ваше приложение, и то, что делает этот «синтаксический анализатор XML», просто возвращает предварительно переваренную структуру XML при вызове его API,Это самый быстрый анализатор XML, доступный на Android (потому что он ничего не анализирует), но требует, чтобы документ XML был скомпилирован как часть построения вашего приложения.
Другая реализация XmlPullParser, которую вы получаетеиз XmlPullParserFactory.newInstance () не является «ограниченным» - эта реализация является полнофункциональной и может анализировать любой необработанный XML-документ, который вы ему даете.
По крайней мере, за один раз (не уверен, что это все ещеслучай), и синтаксический анализатор SAX, и синтаксический анализатор, возвращаемый XmlPullParserFactory.newInstance (), фактически построены на одной базовой реализации, которая является экспатом.Синтаксический анализатор представляет собой синтаксический анализатор «push» (то же самое, что и SAX), поэтому наиболее эффективным способом его использования является использование SAX API.Версия XmlPullParser имеет некоторые дополнительные издержки от SAX, поскольку ей необходимо превратить базовую семантику push в интерфейс pull.
Если это помогает - push означает, что он передает вам проанализированные данные (обратные вызовы, которые вы реализуете, дают вамкаждый тег и другой элемент документа), в то время как pull означает, что вы вызываете синтаксический анализатор для извлечения каждого элемента.