2014-10-26 153 views
0

我已经有一个RSS解析project.it是我的RSS网址;从RSS数据获取图像url

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

,你可以通过调整你从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]; 

最终值存储URL作为字符串的字符串值从那个数据URL

+0

这个方法影响性能? – 2014-10-26 20:30:14