2013-07-08 2 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: //gdata.youtube.com/feeds/api/users/GudjonDanielkM0YirXKa4Lb7MsgqHWiMwEntertainmentgudjondanielCan мы попали 5000 Нравится для всех великих целей ? :) http://www.facebook.com/GudjonDanielYT https://twitter.com/GudjonDaniel

Мой код, это в 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

имена элементов, которые вы ищете в didStartElement (который инициализирует currentNodeContent) не совпадают с именами элементов, которые вы используя для сохранения и сброса currentNodeContent в вашем методе didEndElement.

Таким образом, ваши строки, которые говорят:

if ([elementname isEqualToString:@"title"] || [elementname isEqualToString:@"content"]) 
{ 
    currentNodeContent = [[NSMutableString alloc] init]; 
} 

Вероятно, следует сказать:

if ([elementname isEqualToString:@"title"] || [elementname isEqualToString:@"media:description"]) 
{ 
    currentNodeContent = [[NSMutableString alloc] init]; 
} 
Смежные вопросы