ios – 使用NSXMLParser仅解析前十个帖子,然后分别解析下一个帖
发布时间:2020-12-14 17:59:13 所属栏目:百科 来源:网络整理
导读:我正在使用NSXmlParser来解析rss feed.到目前为止一切运作良好. 我预计rss feed最终会包含几十个/几百个帖子.我目前的解决方案是读取整个RSS Feed并显示结果.但是我想只阅读前十个帖子(以防止它解析可能有数百个项目).然后在稍后的时间(例如当用户到达表的末
我正在使用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]; } 解决方法
在其他人不同的风格答案中,我想做出贡献,如果你的解析器花了很长时间来解析10到100之间的差异是一个重要的人类可测量的数量,那么你做错了.最好是:
>配置您的解析代码以查找减速(或找到更高性能的XML库) 这是一个双赢,因为一次解析它可以使代码更简单,更少的错误,并且一次“加载”(显示)一个rss“页面”将是闪电般的快速,你的用户会爱你(见Instagram的例子关于伪造速度) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |