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]];