2011-05-05 58 views
1

当输入处于有效的XML表单中时,我有一个解析器正常工作。有没有什么方法可以让我知道XML文档格式不正确,并且在没有我的应用程序崩溃的情况下从中恢复?NSXMLParser在无效的XML上崩溃

NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithData:xmlData]; [xmlParser setDelegate:self]; [xmlParser setShouldResolveExternalEntities:YES]; success = [xmlParser parse];

当调用[xmlParser parse]并且不调用我的parseErrorOccurred委托方法时,应用程序崩溃。

编辑
它无关解析器我parseErrorOccurred委托方法是导致飞机坠毁。调用NSLog导致这个问题。

+0

解析器在哪里崩溃?提供一些示例代码。 – 2011-05-05 19:26:16

+0

当我给它一个不符合的XML文档时它崩溃,并且不会调用我的parseErrorOccurred委托方法。 – 2011-05-05 19:29:14

+0

什么确切的代码行崩溃 - 只要它崩溃在调试器控制台中键入“bt”,并张贴。 – Rayfleck 2011-05-05 19:37:32

回答

2

好吧,NSXMLParserDelegate有一个方法parser:parseErrorOccurred:,这个方法在发生致命错误时被调用,所以你可以在那里捕获它并决定如何继续(到目前为止你已解析的所有信息都可用)。

我假设崩溃发生,因为解析器没有返回它所期望的,所以如果你发现错误发生并尝试修复数据和/或替换必要的东西,那么你的应用程序不应该崩溃了。