以块的形式解析XML文件,而无需等待Swift中的完整下载

Ele*_*gyD 13 xml ios swift swift3

在iOS中,我想在下载时解析来自服务器的XML流.它不应该等到服务器完成构建XML并且下载完成之后.服务器以"块"构建XML并将其直接发送到客户端.在我的应用程序中,我有一个UITableView应该立即显示XML的元素,一旦我从服务器收到它.

我已经尝试使用XMLParser(contentsOf: URL)构造函数,但这首先下载整个XML然后解析它.还有另一个构造函数XMLParser(stream: InputStream),但我不知道如何InputStream从a 获取URLConnection.我发现的唯一一件事就是这个问题差不多已经有5年了,而且我无法理解如何在Swift 3中做到这一点,如果它可行的话.

我尝试的另一件事是通过Libxml2,但我有RAM使用或其他事情的问题(请参阅我的旧问题).

如何在不必等待Swift中的完整下载的情况下以块的形式解析XML流?

在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
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 2

也许客户端/服务器的某些会话 Cookie 有问题?尝试在每次请求后删除它们:

// Loops through each of the cookies and deletes them.
let cookieStore = HTTPCookieStorage.shared
for cookie in cookieStore.cookies ?? [] {
    cookieStore.deleteCookie(cookie)
} 
Run Code Online (Sandbox Code Playgroud)