当输入处于有效的XML格式时,我有一个解析器正常工作。有没有办法让我知道什么时候XML文档格式不正确,并在没有应用程序崩溃的情况下从中恢复?
NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithData:xmlData]; [xmlParser setDelegate:self]; [xmlParser setShouldResolveExternalEntities:YES]; success = [xmlParser parse];
调用[xmlParser parse]时应用程序崩溃,并且没有调用我的parseErrorOccurred委托方法。
修改
它与我的parseErrorOccurred委托方法导致崩溃的解析器无关。调用NSLog的疏忽导致了这个问题。
答案 0 :(得分:2)
好吧,NSXMLParserDelegate有一个方法parser:parseErrorOccurred:
,据说当发生致命错误时会调用它,所以你可以在那里捕获它并决定如何继续(到目前为止你解析的所有信息都可用)
我认为崩溃发生了,因为解析器没有返回它所期望的,所以如果你发现错误发生并尝试修复数据和/或替换必要的东西,那么你的应用程序不应再崩溃。