Ios NSXML解析器始终调用;ParseErrorOccessed“;先授权

Ios NSXML解析器始终调用;ParseErrorOccessed“;先授权,ios,objective-c,nsstring,nsxmlparser,nsxml,Ios,Objective C,Nsstring,Nsxmlparser,Nsxml,我有以下代码 NSString *string = "Some value"; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; self.parser = [[NSXMLParser alloc] initWithData:data]; self.parser.delegate = self; [self.parser parse]; 在我调用“parse”方法之后,它立即调用委托parseErrorOccurre

我有以下代码

NSString *string = "Some value";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
self.parser = [[NSXMLParser alloc] initWithData:data];
self.parser.delegate = self;
[self.parser parse];
在我调用“parse”方法之后,它立即调用委托
parseErrorOccurrent
,然后调用委托
parserdendDocument

我只想调用一个方法


提前感谢。

当出现致命错误时会调用委托方法,因此您正在解析的XML存在问题


该方法有一个
NSError
参数,这应该会给您一个关于XML有什么问题的线索。

您的意思是,当解析过程中发生错误时,您只希望调用parseErrorOccurrent(),而不希望调用parserdedDocument()

一种可能的解决方案是:在parseErrorCurred()中写入parser.abortParsing()。我不确定这是否真的有效,如果失败,请尝试以下解决方案:

在类中使用包装解析器的标志。在parserErroreCurred()中将该标志设置为true,然后在parserDidEndDocument()中检查该标志(如果为false,则执行其他代码)

希望这能解决您的问题。:)