मेरे अन्य उत्तर के आगे, जो कुछ सहायक वर्गों का उपयोग करता है और थोड़े मानते हैं कि आप कोर डेटा के साथ सामान संग्रहित कर रहे हैं, यहां एक शुद्ध NSXMLParser तरीका है।
इस उदाहरण में मुझे लगता है कि आपके पास टैग के साथ तीन UIImageViews सेटअप हैं (100,101,102) ताकि हम उन्हें एक्सेस कर सकें। सबसे पहले, कोड है कि पार्सर शुरू होता है:
// Set the URL with the images, and escape it for creating NSURL
NSString *rssURLString = @"http://feeds.gettyimages.com/channels/RecentEditorialEntertainment.rss";
NSString *escapedURL = [rssURLString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *rssURL = [NSURL URLWithString:escapedURL];
// rssParser is an NSXMLParser instance variable
if (rssParser) [rssParser release];
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:rssURL];
[rssParser setDelegate:self];
success = [rssParser parse]; // return value not used
इस बिंदु पर पार्स शुरू होता है और NSXMLParser यह प्रतिनिधि तरीकों के लिए कॉल बंद आग के रूप में यह एक्सएमएल में विभिन्न आरंभ और अंत तत्वों पाता होगा।
इस उदाहरण में मैं केवल didStartElement
विधि लिख रहा हूँ:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
// look for an attribute called url
if ([attributeDict objectForKey:@"url"]) {
currentString = [attributeDict objectForKey:@"url"];
NSLog(@"Image URL: %@", currentString);
NSString* escapedURL = [currentString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:escapedURL]]];
UIImageView * tmpImageView = (UIImageView*)[scrollView viewWithTag:100+imageCount];
[tmpImageView setImage:image];
NSLog(@"images found: %d", imageCount);
imageCount++;
if (imageCount>2) [rssParser abortParsing];
}
}
यहाँ हम देखने के लिए अगर attributeDict (एक NSDictionary वस्तु) एक यूआरएल विशेषता शामिल हैं। यदि ऐसा है, तो हम इसे वर्तमान स्ट्रिंग में ले जाते हैं और फिर इसे से बचते हैं, बस इसमें वर्ण होते हैं कि NSURL चालू हो जाएगा। फिर हम उस यूआरएल से एक छवि बनाते हैं और टैग नंबरों के आधार पर उपयुक्त UIImageView छवि सेट करते हैं। imageCount एक काउंटर है; एक बार हमने तीन छवियां की हैं, हम एनएसएक्सएमएल पार्सर को एक्सएमएल पार्सिंग को निरस्त करने के लिए कहते हैं।
अपने XML तत्व जैसे टैग के अंदर यूआरएल डालता है:
<image>http://example.com/image.jpg</image>
आप didEndElement
और foundCharacters
साथ में कुछ अधिक परिश्रम करने की आवश्यकता होगी। काफी उत्कृष्ट Introduction to Event-Driven XML Programming Guide for Cocoa देखें।
मैंने इसे डेमो करने के लिए एक त्वरित और गंदे ऐप को एक साथ खटखटाया, आप इसे here पकड़ सकते हैं।
यूआरएल गतिशील हैं, क्योंकि मैं फीडबर्नर का उपयोग कर रहा हूं, यह "किसी भी" आरएसएस फ़ीड के साथ काम करेगा? धन्यवाद! –
सुनिश्चित नहीं है कि 'यूआरएल गतिशील' से आपका क्या मतलब है। लेकिन यह किसी भी XML दस्तावेज़ के लिए काम करना चाहिए जब तक कि छवि यूआरएल की पहचान करने के लिए xml दस्तावेज़ में कोई टैग न हो। – Remover
इसका मतलब है कि सभी छवियों को विभिन्न स्थानों की मेजबानी की जाती है ... –