2012-02-27 3 views
0

У меня есть приложение для iOS. Все хранилища данных в xml-файлах.Невозможно разобрать XML с NSXMLParser

<?xml version="1.0" encoding="utf-8"?> 
<objects> 
    <object 
     name="Скульптура Р. Исмагилова «Пермяк – соленые уши»" 
     xcoord="58.00998487478568" 
     ycoord="56.239829063415527" 
     type="" 
     description="" 
     external_name="gl1" /> 
</objects> 

Итак, я хочу, чтобы разобрать этот XML-файл NSMutableArray

Я делаю это с NSXMLParser класса deleagate. Это код класса:

@implementation XMLParser 

@synthesize aPLace; 

- (XMLParser *) initXMLParser { 

    [super init]; 

    appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    return self; 
} 

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

    NSLog(@"parsing"); 

    if([elementName isEqualToString:@"objects"]) { 
     //Initialize the array. 
     appDelegate.books = [[NSMutableArray alloc] init]; 
    } 
    else if([elementName isEqualToString:@"object"]) { 

     //Initialize the book. 
     aPLace = [[Place alloc] init]; 

     //Extract the attribute here. 
     aPLace.name = [[attributeDict objectForKey:@"name"] string]; 

     NSLog(@"Reading name :%@", aPLace.name); 
    } 
} 

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

} 

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

    if([elementName isEqualToString:@"objects"]) 
     return; 

    if([elementName isEqualToString:@"object"]) { 
     [appDelegate.greenLine addObject:aPLace]; 
    } 

} 

@end 

Вы можете видеть, что есть в didStartElement функции NSLog(@"parsing");. Но выход пуст.

Итак, я реализую разбор в AppDelegateClass's функции applicationDidFinishLaunching

- (void)applicationDidFinishLaunching:(UIApplication *)application { 


    NSURL *url = [[NSURL alloc] initWithString:@"greenline_ru.xml"]; 
    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

    //Initialize the delegate. 
    XMLParser *parser = [[XMLParser alloc] initXMLParser]; 

    //Set delegate 
    [xmlParser setDelegate:parser]; 

    //Start parsing the XML file. 
    BOOL success = [xmlParser parse]; 

    if(success) 
     NSLog(@"No Errors"); 
    else 
     NSLog(@"Error Error Error!!!"); 

    // Configure and show the window 
    [window addSubview:[navigationController view]]; 
    [window makeKeyAndVisible]; 
} 

и каждый выход время Error Error Error!!! почему? В чем проблема?

ответ

2
NSURL *url = [[NSURL alloc] initWithString:@"greenline_ru.xml"]; 

Я думаю, что это ваша проблема. Если у вас есть файл, вы должны использовать что-то вроде

NSString *path = [[NSBundle mainBundle] pathForResource:@"greenline_ru" 
               ofType:@"xml"]; 
[[NSXMLParser alloc] initWithData:[NSData dataWithContentsOfFile:path]] 
Смежные вопросы