2014-10-26 4 views
0

У меня есть синтаксический анализ RSS-проекта project.it с моим RSS-адресом;Получить URL-адрес изображения из RSS-данных

http://vimeo.com/udhdhmi/videos/rss

Я разбор с методами NSXMLParser.

- (void)rssParseStart{ 

    NSURL *url = [NSURL URLWithString:@"http://vimeo.com/udhdhmi/videos/rss"]; 
    parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

    [parser setDelegate:self]; 
    [parser setShouldResolveExternalEntities:NO]; 
    [parser parse]; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 

    element = elementName; 
    if ([element isEqualToString:@"item"]) { 
     model = [[VideoModel alloc]init]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

    if ([element isEqualToString:@"title"]) { 
     [model.videoTitle appendString:string]; 
    } 
    if ([element isEqualToString:@"pubDate"]) { 
     [model.videoPubDate appendString:string]; 
    } 
    if ([element isEqualToString:@"link"]) { 
     [model.videoLink appendString:string]; 
    } 
    if ([element isEqualToString:@"description"]) { 
     [model.videoDescription appendString:string]; 
    } 

} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

    if ([elementName isEqualToString:@"item"]) { 

     [feeds addObject:model]; 
    } 
} 
- (void)parserDidEndDocument:(NSXMLParser *)parser{ 

    [self.tableView reloadData]; 
} 

Нет проблем до этого момента, но пришедшие данные из тегов «Описание»; -example;

<p><a href="http://vimeo.com/107905906"><img src="http://i.vimeocdn.com/video/491445051_200x150.jpg" alt="" /></a></p><p><p class="first"></p></p><p><strong>Cast:</strong> <a href="http://vimeo.com/udhdhmi">DHMI</a></p><p><strong>Tags:</strong> </p> 

Я хочу только адрес URL-адреса изображения с этими данными. благодарю вас за интерес.

ответ

0

Решение:

- (void)rssParseStart{ 
    self.progressBar = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    self.progressBar.labelText = @"Lütfen bekleyiniz..."; 

    NSURL *url = [NSURL URLWithString:@"http://vimeo.com/udhdhmi/videos/rss"]; 
    parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

    [parser setDelegate:self]; 
    [parser parse]; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 

    element = elementName; 

    if ([element isEqualToString:@"item"]) { 
     model = [[VideoModel alloc]init]; 
    } 
    if ([element isEqual:@"media:thumbnail"]) { 
     NSString *imageURLString = [attributeDict objectForKey:@"url"]; 
     [model.videoDescription appendString:imageURLString]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

    if ([element isEqualToString:@"title"]) { 
     [model.videoTitle appendString:string]; 
    } 
    if ([element isEqualToString:@"pubDate"]) { 
     [model.videoPubDate appendString:string]; 
    } 
    if ([element isEqualToString:@"link"]) { 
     [model.videoLink appendString:string]; 
    } 

} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

    if ([elementName isEqualToString:@"item"]) { 

     [feeds addObject:model]; 
    } 
} 
- (void)parserDidEndDocument:(NSXMLParser *)parser{ 

    [self.tableView reloadData]; 
    [MBProgressHUD hideHUDForView:self.view animated:YES]; 
} 
1

вы можете получить URL из этих данных путем обрезки значение строки вы получите от синтаксического анализа XML

// it is assumed that 'string' variable holds your current data 
NSRange range; 
int index; 

range = [string rangeOfString:@"img src=\""]; 
index = range.location + range.length; 

NSString* trimmedString = [string substringFromIndex:index]; 

range = [trimmedString rangeOfString:@"\""]; 
index = range.location + range.length - 1; 

NSString* finalValue = [trimmedString substringToIndex:index]; 

finalValue сохраняет URL-адрес в виде строки

+0

Этот метод влияют на производительность? –

Смежные вопросы