NSXMLParserErrorMessage内部错误:巨大的输入查找

时间:2013-11-24 17:39:32

标签: ios objective-c xml nsxmlparser

我有一个IOS应用程序,我需要解析一个xml文件,我一直在使用NSXMLParser。我有一些大约8千字节的xml数据,我得到这个错误,但我解析较小的文件没有问题。我试过搜索,在IOS中找不到其他有这个问题的人。这是NSXMLParser的限制,我需要使用不同的库,还是有一些属性必须设置为允许更大的数据?

任何帮助都将不胜感激。

编辑: 这是我从我的网络服务中检索的文件:https://www.dropbox.com/s/3436w653reyybpb/File.xml

以下是我使用的代码:

// XML.m
- (id)parseXml:(NSData *)data
{
    NSXMLParser *xml = [[NSXMLParser alloc] initWithData:data];
    xml.delegate = self;
    results = [[NSMutableArray alloc] init];
    error = nil;
    [xml parse];
    if (error) return error;
    return results;
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    [results addObject:attributeDict];
}
- (void) parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
    error = parseError;
}

代码甚至没有到达didStartElement委托方法,它只是直接进入parseErrorOccured。传递的数据是我提供的文件内容。

2 个答案:

答案 0 :(得分:2)

xml:

<?xml version="1.0" encoding="utf-16"?>

指定它是utf-16但实际上是utf-8

答案 1 :(得分:2)

正如扎普所说,问题在于它不是utf-16。将来,如果NSXMLParser错误消息不够清楚,您可以尝试在终端命令行中通过xmllint运行它。在这种情况下,它报告:

$ xmllint File.xml 
File.xml:1: parser error : Document labelled UTF-16 but has UTF-8 content
<?xml version="1.0" encoding="utf-16"?><Response Error=""><RX RxNumber="11684600
                                     ^