2013-08-20 18 views
2

我正在解析我的應用程序的web服務響應(XML),我意識到並非所有的答案都被解析(我預計至少有3個相同的信息塊),所以我決定修改我的方法connectionDidFinishLoading這樣的:WebService未完成的目標-C

-(void) connectionDidFinishLoading:(NSURLConnection *) connection { 
    NSString *XMLResponse = [[NSString alloc]initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 

    NSLog(@"xml message: %@, data length: %i", XMLResponse, [webData length]); 

    if ([XMLResponse hasPrefix:@"[ERR]"]){ 
     [[[UIAlertView alloc]initWithTitle:@"Notification" 
            message:XMLResponse != nil ? [@"there was an error while trying to load service" stringByAppendingString:XMLResponse]: @"there was an error while trying to load service" 
            delegate:self 
         cancelButtonTitle:@"OK" 
         otherButtonTitles:nil]show]; 
     _transacWebServCompleto = @"FALSE"; 
     return; 
    } 

    xmlParser = [[NSXMLParser alloc] initWithData:webData]; 
    [xmlParser setDelegate:self]; 
    [xmlParser setShouldResolveExternalEntities:YES]; 
    [xmlParser parse]; 
} 

在我跑我的應用程序的時候,我得到這個輸出部分

xml message: (null), data length: 5516 

表是否正確,但不打印完全和我的XML被顯示爲空,但它包含數據,因爲數據長度,任何幫助,我會欣賞

在此先感謝

回答

2

您的XML可能包含特殊字符,如重音的話,試試這個:

-(void) connectionDidFinishLoading:(NSURLConnection *) connection { 
    NSString *XMLResponse = [[NSString alloc]initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSISOLatin1StringEncoding]; 

    NSLog(@"xml message: %@, data length: %i", XMLResponse, [webData length]); 

    if ([XMLResponse hasPrefix:@"[ERR]"]){ 
     [[[UIAlertView alloc]initWithTitle:@"Notification" 
            message:XMLResponse != nil ? [@"there was an error while trying to load service" stringByAppendingString:XMLResponse]: @"there was an error while trying to load service" 
            delegate:self 
         cancelButtonTitle:@"OK" 
         otherButtonTitles:nil]show]; 
     _transacWebServCompleto = @"FALSE"; 
     return; 
    } 

    xmlParser = [[NSXMLParser alloc] initWithData:[XMLResponse dataUsingEncoding:NSUTF8StringEncoding]]; 
    [xmlParser setDelegate:self]; 
    [xmlParser setShouldResolveExternalEntities:YES]; 
    [xmlParser parse]; 
} 

我所做的只是:

  1. 把你的NSString(XMLResponse)和變化編碼爲NSISOLatin1StringEncoding
  2. 通過在一個步驟中使用您的NSString創建一個NSData對象來初始化您的NSXMLParser對象(解析) (XMLResponse),但現在編碼與NSUTF8StringEncoding

試試看,並告訴我們它是如何去!

+0

你救了我的命,它沒有工作!謝謝!!! = d –