Bir rss feed'ini ayrıştırmak için NSXmlParser kullanıyorum. Her şey yolunda çalışıyor.Yalnızca ilk on iletiyi ayrıştırmak için NSXMLParser'ı kullanın ve ardından sonraki lotu ayrı ayrı ayrıştırın
I will sonunda mesajların onlarca/yüzlerce içeren rss feed tahmin ediyorum. Şu anki çözümüm, rss feed'ini okuyor ve sonuçları gösteriyor. Ancak sadece ilk on mesajı okumak istiyorum (potansiyel olarak yüzlerce öğeyi ayrıştırmak için). Daha sonra (ondan sonra kullanıcı tablonun sonuna ulaştığında) sonraki on mesajı ayrıştırmak için.
Benim soru ben ilk on mesajları ayrıştırmak nasıl, daha sonra önümüzdeki on mesajları, vb sonra önümüzdeki on mesajları ve ... İşte Ben TÜM mesajları almak için kullanıyorum budur ayrıştırmak:- (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];
}
Bu, xml'in ikinci yarısını ayrıştırırken performans sorunlarına neden olacaktır, aksi halde tek bir adımda hepsini ayrıştırmak iyi olacaktır –
@MarkPervovskiy Neden bunun performans sorunlarına neden olacağını bilmiyorum: açıklığa kavuşabilir misiniz? – Ben
Ayrıştırma XML yavaş bir işlemdir ve özellikle xml "yüzlerce gönderi" içerdiğinde herhangi bir zaman alabilir. Böylece, çözümünüz ilk 10 yazıyı, ardından ilk 20 yayını, ardından ilk 30 gönderiyi vb. Bir dakika kullanıcı, saniyelerinin yarısı nasıl geçtiğini görecek. –