Ответ
Стриминговый парсинг эффективен для обработки больших 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 файлов
- Сетевых ответов большого размера
- Постепенной обработки данных (например, прогрессивной загрузки изображений)