В iOS я хотел бы проанализировать поток XML с сервера во время загрузки. Не нужно ждать, пока сервер не закончит создание XML, и загрузка будет завершена. Сервер создает XML в "кусках" и отправляет его непосредственно клиенту. В моем приложении у меня есть UITableView
, который должен немедленно отображать элементы XML, как только я получил его с сервера.
Я пробовал его с конструктором XMLParser(contentsOf: URL)
, но сначала загружает весь XML, а затем анализирует его. Существует еще один конструктор XMLParser(stream: InputStream)
, но я не знаю, как получить InputStream
от URLConnection
. Единственное, что я нашел, это этот вопрос, которому почти 5 лет, и я не мог понять, как это сделать в Swift 3, если он даже работает.
Другая вещь, которую я пробовал, была через Libxml2, но там у меня проблемы с использованием ОЗУ или другими вещами (см. мой старый вопрос).
Как я могу разобрать XML-поток в кусках, не дожидаясь полной загрузки в Swift?
В Android я использовал бы XMLPullParser
и имел бы:
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
InputStream inputStream = connection.getInputStream();
XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser pullParser = xmlFactoryObject.newPullParser();
pullParser.setInput(inputStream, null);
// here comes the actual parsing