我有一个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。传递的数据是我提供的文件内容。
答案 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
^