Используйте NSXMLParser, чтобы анализировать только первые десять сообщений, а затем отдельно анализировать следующий лот

Я использую NSXmlParser для анализа RSS-канала. Пока все работает хорошо.

Я ожидаю, что RSS-канал в конечном итоге будет содержать десятки/сотни сообщений. Мое текущее решение - читать всю rss-ленту и отображать результаты. Однако я хочу прочитать только первые десять сообщений (, чтобы предотвратить синтаксический анализ потенциально сотен элементов ). Затем в более позднее время (скажите, когда пользователь достигает конца таблицы ), чтобы проанализировать следующие десять сообщений.

Итак, мой вопрос заключается в том, как мне разобрать первые десять сообщений, затем разобрать следующие десять сообщений, затем следующие десять сообщений и так далее...

Вот что я использую, чтобы получить ВСЕ сообщения:

- (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];

}
5
задан Andrew Davis 3 July 2012 в 19:01
поделиться