Сбой синтаксического анализа NSXMLParser при повторном использовании, но нет кода ошибки

StackOverflow https://stackoverflow.com/questions/8985546

  •  13-11-2019
  •  | 
  •  

Вопрос

у меня есть 4 объекта NSXMLParser.они отлично работают, когда я использую их в первый раз, но когда я использую их более одного раза, они терпят неудачу, но не возвращают код ошибки

инициализация

 -(void)initParsers
 {
     NSURL* file_url = nil;
        FOR(i,4){       

    file_url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"stack%d",0]ofType:@"xml" inDirectory:@"stackXmls"]];
    stackXmlParser[i] = [[NSXMLParser alloc] initWithContentsOfURL:file_url];
    stackXmlParser[i].delegate = self;
   }   

 }

Анализировать

BOOL success = [stackXmlParser[currentStack] parse];
if (success)
{
   //Do XML stuff
   ...          
} else {
NSLog(@"Error Error Error!!!");
    NSError *error = [stackXmlParser[currentStack] parserError];
    NSLog(@"Errors with xmlParser: %@  %d", [error localizedDescription], error.code); 
}

ВЫХОДНОЙ СИГНАЛ

 2012-01-24 16:03:29.542 Cards[5168:207] Error Error Error!!!
 2012-01-24 16:03:29.543 Cards[5168:207] Errors with xmlParser: (null)  0
Это было полезно?

Решение

Попробуйте использовать initWithData вместо initWithContentsOfURL

NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToXMLFile]];
NSLog(@"initWithContentsOfURL 1: %s", ([parser parse])?"OK":"Fail");
NSLog(@"initWithContentsOfURL 2: %s", ([parser parse])?"OK":"Fail");
parser = [[NSXMLParser alloc]initWithData:[NSData dataWithContentsOfFile:pathToXMLFile]];
NSLog(@"initWithData 1: %s", ([parser parse])?"OK":"Fail");
NSLog(@"initWithData 2: %s", ([parser parse])?"OK":"Fail");

Выходной сигнал

2012-01-24 18:37:31.260 CLIXMPLParser[12658:707] initWithContentsOfURL 1: OK
2012-01-24 18:37:31.280 CLIXMPLParser[12658:707] initWithContentsOfURL 2: Fail
2012-01-24 18:37:31.292 CLIXMPLParser[12658:707] initWithData 1: OK
2012-01-24 18:37:31.297 CLIXMPLParser[12658:707] initWithData 2: OK
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top