2012-02-27 3 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 

당신은 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"]; 

나는 이것이 문제라고 생각 http://www.tbxml.co.uk/TBXML/API.html를 this-. 파일이 있다면 다음과 같이 사용해야합니다.

NSString *path = [[NSBundle mainBundle] pathForResource:@"greenline_ru" 
               ofType:@"xml"]; 
[[NSXMLParser alloc] initWithData:[NSData dataWithContentsOfFile:path]] 
0

사용 TBXML, 이것은 아주 사용하기 쉽습니다 ... 연구

관련 문제