2013-12-08 107 views
5

的代碼打印以下消息:Error Domain=NSXMLParserErrorDomain Code=111 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 111.)NSXMLParserErrorDomain 111

mainUrl = [NSURL URLWithString:@"http://www.carris.pt/pt/carreiras"]; 
NSString *urlContents = [NSString stringWithContentsOfURL:mainUrl encoding:NSISOLatin1StringEncoding error:nil]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:[urlContents dataUsingEncoding:NSISOLatin1StringEncoding]]; 
[xmlParser parse]; 
NSLog(@"%@", [xmlParser parserError]); 

任何人有線索?正如你可以通過代碼看到的那樣,html使用ISO-8859-1編碼。

更新:我提交了網址到html驗證器站點:http://validator.w3.org/,它發現了30多個錯誤。我認爲這與錯誤有關。但是我可以使用HPPLE解析html。

+0

我看到它在解析帶有無效UTF-8字符的CDATA標籤時彈出。 – qwertz

回答

3

似乎沒有人偶然發現了正確的答案,所以在這裏。

NSXMLParserError docs,它說:

以下錯誤代碼由的NSXMLParser定義。有關此處未列出的錯誤代碼,請參閱< libxml/xmlerror.h>頭文件。

數111未在此列表中提及,所以我們去/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/libxml/xmlerror.h,並找到值:

XML_ERR_USER_STOP, /* 111 */ 

沒有在libxml2的XML_ERR_USER_STOP大量的文檔資料,但是從reading the changeset,它看起來像是一個快速失敗,當解析器看到一個意外的EOF。

2

如果您在NSXMLParser.h看,你會看到錯誤代碼的列表:

NSXMLParserInternalError = 1, 
NSXMLParserOutOfMemoryError = 2, 
NSXMLParserDocumentStartError = 3, 
NSXMLParserEmptyDocumentError = 4, 
NSXMLParserPrematureDocumentEndError = 5, 
NSXMLParserInvalidHexCharacterRefError = 6, 
NSXMLParserInvalidDecimalCharacterRefError = 7, 
NSXMLParserInvalidCharacterRefError = 8, 
NSXMLParserInvalidCharacterError = 9, 
NSXMLParserCharacterRefAtEOFError = 10, 
NSXMLParserCharacterRefInPrologError = 11, 
NSXMLParserCharacterRefInEpilogError = 12, 
... 

所以看起來它是一個NSXMLParserCharacterRefInPrologError,這是「常量」部分in the documentation定義。它說:

NSXMLParserCharacterRefInPrologError 在序言中找到無效的字符。 Available in iOS 2.0及更高。 在NSXMLParser.h中聲明。

+0

代碼111應該是11嗎?我注意到文檔中沒有定義111,這對我來說可能是這種情況。 – thegrinner

+1

這是我的猜測。無論是這個還是Apple發佈的一些內部錯誤。 – user1118321

+2

這不是正確的答案,111更可能是由XML格式不正確造成的。使用http://www.xmlvalidation.com/幫我找到了我的問題 – CMash

0

我在解析XML時碰到類似的東西。問題可能是您正在使用的編碼。嘗試UTF8 enconding而不是iOSLatin,即

NSString *urlContents = [NSString stringWithContentsOfURL:mainUrl encoding:NSUTF8StringEncoding error:nil]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:[urlContents dataUsingEncoding:NSUTF8StringEncoding]]; 
+0

我試過了,我得到了'Error Domain = NSCocoaErrorDomain Code = -1「操作無法完成。(Cocoa error -1。)」 UserInfo = 0x8a50420 {NSXMLParserErrorMessage =無法打開數據流}。 – pedroremedios

4

解析時,我也有「111」(未記錄的?)錯誤代碼。事實證明,XML解析器期望XML格式良好(例如,包含所有其他根節點)。

+0

+1,我發現我沒有關閉標籤,所以我的XML格式也不完整。 – Kaydell

+0

我使用了http://www.xmlvalidation。com /發現我的問題,這絕對是一些不妥的XML! – CMash

相關問題