2013-12-08 72 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

相关问题