2012-02-27 15 views
0

私はiOSアプリケーションを持っています。すべてのデータはXMLファイルに保存されます。だから、NSXMLParserでXMLを解析できません

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

、私はNSXMLParser deleagateクラスでそれを行うNSMutableArray

に、このXMLファイルを解析します。これは、クラスのコードです:

@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 

あなたはNSLog(@"parsing");didStartElement内の関数があることがわかります。しかし、出力は空です。

だから、私は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"]; 

this- 研究非常に使いやすいです。ファイルがある場合は、次のようなものを使用してください。

NSString *path = [[NSBundle mainBundle] pathForResource:@"greenline_ru" 
               ofType:@"xml"]; 
[[NSXMLParser alloc] initWithData:[NSData dataWithContentsOfFile:path]] 
関連する問題