NSXMLParserErrorDomain 111

下面的代码是打印以下消息: Error Domain=NSXMLParserErrorDomain Code=111 "The operation couldn't be completed. (NSXMLParserErrorDomain error 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编码。

更新:我提交的url到htmlvalidation器网站: http : //validator.w3.org/ ,它发现了30多个错误。 我认为这与错误有关。 但是我可以使用HPPLEparsinghtml。

似乎没有人绊倒正确的答案,所以在这里。

在NSXMLParserError文档中 ,它说:

以下错误代码由NSXMLParser定义。 有关此处未列出的错误代码,请参阅<libxml / xmlerror.h>头文件。

111这个列表中没有提到,所以我们去/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/libxml/xmlerror.h ,并find值:

 XML_ERR_USER_STOP, /* 111 */ 

在libxml2中没有很多关于XML_ERR_USER_STOP的文档,但是通过阅读变更集 ,当分析器看到意外的EOF时,它看起来是一个快速失败。

parsing时,我也有“111”(无证?)错误代码。 事实certificate,XMLparsing器期望XML格式良好(例如,包含所有其他的根节点)。

如果您查看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 。 它说:

NSXMLParserCharacterRefInPrologError在序言中find无效的字符。 在iOS 2.0及更高版本中可用。 在NSXMLParser.h中声明。

我在parsingXML时碰到类似的东西。 问题可能是您正在使用的编码。 尝试使用UTF8 enconding而不是iOSLatin即

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