NSXMLParser 重用时解析失败但没有错误代码

发布于 2024-12-28 13:16:40 字数 1037 浏览 0 评论 0原文

我有 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

i have 4 NSXMLParser objects.they work fine when i use them for first time but when i use them more than once they fail but return no error code

initialization

 -(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;
   }   

 }

Parse

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); 
}

OUTPUT

 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南汐寒笙箫 2025-01-04 13:16:40

尝试使用 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

Try using initWithData instead of 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");

Output

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文