And*_*vis 5 rss xcode nsxmlparser nsxml ios
我正在使用NSXmlParser来解析rss feed.到目前为止一切运作良好.
我预计rss feed最终会包含几十个/几百个帖子.我目前的解决方案是读取整个RSS Feed并显示结果.但是我想只阅读前十个帖子(以防止它解析可能有数百个项目).然后在稍后的时间(例如当用户到达表的末尾时)来解析接下来的十个帖子.
所以我的问题是如何解析前十个帖子,然后解析接下来的十个帖子,然后解析接下来的十个帖子等等......
这是我用来获取所有帖子的内容:
- (void)parseXMLFileAtURL:(NSString *)URL
{
myArray = [[NSMutableArray alloc] init];
//convert the path to a proper NSURL or it won't work
NSURL *xmlURL = [NSURL URLWithString:URL];
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[rssParser setDelegate:self];
[rssParser parse];
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
//error
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
//clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
// save values to an item, then store that item into the array...
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
// save the characters for the current item...
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[myTable reloadData];
}
Run Code Online (Sandbox Code Playgroud)
在其他人不同的风格答案中,我想做出贡献,如果你的解析器花了很长时间来解析10到100之间的差异是一个重要的人类可测量的数量,那么你做错了.最好是:
这是一个双赢,因为一次解析它可以使代码更简单,更少的错误,并且一次"加载"(显示)一个rss"页面"将是闪电般的快速,你的用户会爱你(见Instagram的例子关于伪造速度)
小智 0
您可以调用[rssParser abortParsing]
来停止解析。停止后,您需要手动剪切 xml 的第一部分。或者以某种方式告诉网络服务。NSXMLParser 不会给你跳转到那里的权限。
归档时间: |
|
查看次数: |
1173 次 |
最近记录: |