Что можно эффективно разбирать с помощью стримингового парсинга

«Что можно эффективно разбирать с помощью стримингового парсинга» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стриминговый парсинг эффективен для обработки больших XML/JSON данных, когда нецелесообразно загружать весь документ в память. Примеры:

// XML с XmlPullParser
val parser = Xml.newPullParser()
parser.setInput(stream, null)
while (parser.eventType != XmlPullParser.END_DOCUMENT) {
    when (parser.eventType) {
        XmlPullParser.START_TAG -> if (parser.name == "item") {
            // обрабатываем элемент
        }
    }
    parser.next()
}

// JSON с JsonReader
JsonReader(reader).use { jsonReader ->
    jsonReader.beginArray()
    while (jsonReader.hasNext()) {
        // читаем элементы по одному
    }
}

Также подходит для:

  • Логов/CSV файлов
  • Сетевых ответов большого размера
  • Постепенной обработки данных (например, прогрессивной загрузки изображений)