W iOS, chciałbym przeanalizować strumień XML z serwera podczas pobierania. Nie musi czekać, aż serwer skończy tworzenie XML i pobieranie się zakończy. Serwer buduje XML w "porcjach" i wysyła go bezpośrednio do klienta. W mojej aplikacji mam UITableView
, która powinna natychmiast pokazać elementy XML, jak tylko otrzymałem je z serwera.Parsowanie pliku XML w porcjach bez oczekiwania na pełne pobranie w Swift
Próbowałem go z konstruktorem XMLParser(contentsOf: URL)
, ale najpierw pobiera cały plik XML, a następnie analizuje go. Istnieje inny konstruktor: XMLParser(stream: InputStream)
, ale nie wiem, jak uzyskać InputStream
od URLConnection
. Jedyne, co znalazłem, to this question, które ma prawie 5 lat i nie mogłem zrozumieć, jak to zrobić w Swift 3, jeśli nawet działa.
Inną rzeczą, której próbowałem, był przez Libxml2, ale mam problemy z używaniem pamięci RAM lub inne rzeczy (zobacz mój old question).
W jaki sposób mogę przeanalizować strumień XML w porcjach, bez konieczności oczekiwania na pełne pobranie w Swift?
W Androidzie, chciałbym użyć XMLPullParser
oraz:
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
Próbowałem Twojego rozwiązania, ale dane są zerowe. Z jakiego portu mam korzystać? 443 dla HTTPS? Ponieważ mój punkt końcowy używa protokołu HTTPS, adres URL wygląda następująco: 'https: //www.example.com/api/query.php? Title = Test' – ElegyD