2013-07-08 3 views
0

현재 YouTube API V2를 사용 중이며 동영상 설명을 수집하는 중에 잘못된 데이터가 표시됩니다. XML로 빠르게 수정 하시겠습니까?

This is the link where I'm getting the XML information from.

은 문자열이 나는

우리가 모든 위대한 목표 5000 '좋아요'를 칠 수 받고있는 것으로 생각하고있어인가? :) http://www.facebook.com/GudjonDanielYT https://twitter.com/GudjonDaniel

하지만 나는이 일

GudjonDanielhttp를 얻을 : 우리는 모든 위대한 목표 5000 '좋아요'를 누르 //gdata.youtube.com/feeds/api/users/GudjonDanielkM0YirXKa4Lb7MsgqHWiMwEntertainmentgudjondanielCan ? :) http://www.facebook.com/GudjonDanielYT https://twitter.com/GudjonDaniel

내 코드, 당신이 didStartElement이 (currentNodeContent를 초기화하는) 요소의 이름과 일치하지 않습니다에서 찾고있는 media:description

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementname isEqualToString:@"title"] || [elementname isEqualToString:@"content"]) 
    { 
     currentNodeContent = [[NSMutableString alloc] init]; 
    } 
    else if ([elementname isEqualToString:@"entry"]) 
    { 
     currentFeed = [ChanelFeeds alloc]; 
    } 
    else if ([elementname isEqualToString:@"yt:duration"]) 
    { 
     currentFeed.duration = [attributeDict objectForKey:@"seconds"]; 
    } 
    else if ([elementname isEqualToString:@"yt:statistics"]) 
    { 
     currentFeed.views = [attributeDict objectForKey:@"viewCount"]; 
    } 
    else if ([elementname isEqualToString:@"gd:rating"]) 
    { 
     currentFeed.rating = [attributeDict objectForKey:@"average"]; 
    } 
    else if ([elementname isEqualToString:@"media:player"]) 
    { 
     currentFeed.streamURL = [NSURL URLWithString:[attributeDict objectForKey:@"url"]]; 
    } 
    else if ([elementname isEqualToString:@"media:thumbnail"] && !currentFeed.thumbnailURL) 
    { 
     currentFeed.thumbnailURL = [NSURL URLWithString:[attributeDict objectForKey:@"url"]]; 
    } 
} 

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementname isEqualToString:@"title"]) 
    { 
     currentFeed.title = currentNodeContent; 
     currentNodeContent = nil; 
    } 
    else if ([elementname isEqualToString:@"media:description"]) 
    { 
     currentFeed.description = currentNodeContent; 
     currentNodeContent = nil; 
    } 
    else if ([elementname isEqualToString:@"entry"]) 
    { 
     [self.feeds addObject:currentFeed]; 
     currentFeed = nil; 
     currentNodeContent = nil; 
    } 
} 

답변

1

요소 이름에있어 당신 didEndElement 메소드의 currentNodeContent을 저장하고 재설정하는 데 사용하고 있습니다.

따라서, 당신의 선은 말을한다 : 아마
if ([elementname isEqualToString:@"title"] || [elementname isEqualToString:@"content"]) 
{ 
    currentNodeContent = [[NSMutableString alloc] init]; 
} 

말을해야합니다

if ([elementname isEqualToString:@"title"] || [elementname isEqualToString:@"media:description"]) 
{ 
    currentNodeContent = [[NSMutableString alloc] init]; 
} 
관련 문제