2011-05-05 41 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:,這個方法在發生致命錯誤時被調用,所以你可以在那裏捕獲它並決定如何繼續(到目前爲止你已解析的所有信息都可用)。

我假設崩潰發生,因爲解析器沒有返回它所期望的,所以如果你發現錯誤發生並嘗試修復數據和/或替換必要的東西,那麼你的應用程序不應該崩潰了。