这是一个两部分问题。 我正在使用NSXMLParser下载RSS源。
NSURL *url = [NSURL URLWithString:@"linktorssxml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
我想知道是否有办法简单地远程读取xml的标头并检查最后的更新时间戳,这样我只需要运行解析器代码并实际拉出整个xml如果有变化?< / p>
此外,正如我所说,这是一个两部分问题。 我对外部托管的plist有同样的想法。目前这称为: -
_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]];
同样,有没有办法远程检查标题的最后更新时间,因此只有在发生变化时才下载完整的文件?
答案 0 :(得分:1)
是的,但您需要使用NSURLConnection
或NSURLSession
下载数据,而不是要求NSXMLParser
为您执行此操作。
您可以使用NSMutableURLRequest
来描述您想要的内容,从而获取HTTP标头(可能包含上次修改日期)。这有一个名为setHTTPMethod:
的方法,您可以将方法设置为HEAD
。建立连接,获取标题,然后决定下一步该做什么。
除非XML非常大,否则这可能不是最有效的方法。如果文件已被修改,您只需要发出第二个网络请求即可获得该文件。网络请求很慢,因此您应该将它们保持在最低限度。在大多数情况下,您最好使用NSURLConnection
或NSURLSession
来获取文件。响应将包含HTTP标头,因此您仍然可以获取日期,您仍然可以决定是否运行解析器。