2015-02-11 4 views
-2

У меня есть XML для разбора:XML Parser Objective-C

<media:content url='http://www.youtube.com/v/x5cBBXXFAPQ?version=3&amp;f=playlists&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='391' yt:format='5'/><media:content url='rtsp://r5---sn-4g57kuee.c.youtube.com/CiULENy73wIaHAn0AMV1BQGXxxMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='391' yt:format='1'/><media:content url='rtsp://r5---sn-4g57kuee.c.youtube.com/CiULENy73wIaHAn0AMV1BQGXxxMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='391' yt:format='6'/><media:description type='plain'>Bohemian Rhapsody 

, как я могу получить первый URL от содержания?

+1

Id скажите: что вы пробовали, это слишком широко, SO не подразумевается как «написать мой код для меня», а не ... Вместо этого я даю вам код –

+0

возможный дубликат [ Навигация по XML из Objective-C] (http://stackoverflow.com/questions/762567/navigating-xml-from-objective-c) – Larme

ответ

0

работоспособной образец: редактировал основанный на комментарий ...

#import <Foundation/Foundation.h> 

@interface MyClass : NSObject<NSXMLParserDelegate> 
@end 
@implementation MyClass 

- (instancetype)init { 
    self = [super init]; 
    id xml = @"<media:content url='http://www.youtube.com/v/x5cBBXXFAPQ?version=3&amp;f=playlists&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='391' yt:format='5'/><media:content url='rtsp://r5---sn-4g57kuee.c.youtube.com/CiULENy73wIaHAn0AMV1BQGXxxMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='391' yt:format='1'/><media:content url='rtsp://r5---sn-4g57kuee.c.youtube.com/CiULENy73wIaHAn0AMV1BQGXxxMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='391' yt:format='6'/><media:description type='plain'>Bohemian Rhapsody"; 
    id d = [xml dataUsingEncoding:NSUTF8StringEncoding]; 

    NSXMLParser *p = [[NSXMLParser alloc] initWithData:d]; 
    p.delegate = self; 
    [p parse]; 

    return self; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
    if([elementName isEqualToString:@"media:content"]) { 
     static BOOL first = YES; 
     if(first) { 
      NSLog(@"%@", attributeDict[@"url"]); 
      first = NO; 
     } 
    } 
} 

@end 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     id c = [[MyClass alloc] init]; 
    } 
    return 0; 
} 
+0

Это работает для всего URL-адреса, который у меня есть, но я хочу только для первого URL-адреса от content :( –

+0

как насчет только сохранить только первый? ;) –

0

Сначала вам необходимо обратиться в Apple, справки о

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/index.html

- (void)viewDidLoad 

    { 
     NSURL *url = [[NSURL alloc]initWithString:@"yourURL"]; 
     NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url]; 
     [parser setDelegate:self]; 
     BOOL result = [parser parse]; 
    } 

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
    { 
     NSLog(@\"Did start element\"); 
    if ([elementName isEqualToString:@"media:content"]) 
    { 
     NSLog(@"found URL",[attributeDict objectForKey:@"url"]);//here u will get the url u want 
     return; 
    } 
    } 

    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
    { 
     NSLog(@"Did end element"); 
     if ([elementName isEqualToString:@"media"]) 
      { 
       NSLog(@"rootelement end"); 
      } 

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

      NSLog(@"Value %@",string); 

    } 

Это просто обзор о методах Делегат XML не решение. Верните документ.