NSXMLParserErrorDomain 111

时间:2013-12-08 15:03:52

标签: ios objective-c nsxmlparser nsxmlparsererrordomain

以下代码正在打印以下消息: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编码。

更新:我将网址提交到html验证程序网站:http://validator.w3.org/,并发现了30多个错误。我认为这与错误有关。但我可以用HPPLE解析html。

4 个答案:

答案 0 :(得分:4)

我也有" 111" (未记录?)解析时的错误代码。事实证明,XML Parser期望XML格式良好(例如,一个包含所有其他节点的根节点)。

答案 1 :(得分: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 :(得分: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   在prolog中找到无效的字符。   适用于iOS 2.0及更高版本。   在NSXMLParser.h中声明。

答案 3 :(得分:0)

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

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