如果NSXMLParser找到以下行,则会引发NSXMLParserErrorDomain#64:
<?xml version="1.0"?>
如果我是initWithContentsOfUrl或initWithData,那么没有区别。 xml来自php5.3 apache系统。如果省略此行,则文档将无错误地解析。我们拥有服务器,所以我可以过滤掉这一行,但我宁愿修复解析器。
答案 0 :(得分:3)
问题出现了,因为PHP服务器在<?XML
标题之前返回一些垃圾和空格。
这是一个简单的解决方案,对我有用,只需在解析之前纠正传入的字符串:
NSRange range = [theXML rangeOfString:@"<?xml"];
theXML = [[theXML substringFromIndex:NSMaxRange(range)-5] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSData *xmldata = [theXML dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
答案 1 :(得分:1)
你确定线上没有一些东西,比如字节顺序标记或其他隐藏字符吗?这是我能想到的唯一会导致该行错误的事情,假设当然这是文档中的第一行?
此外,添加encoding="UTF-8"
可能有所帮助,但同样,它必须是文档的第一行,并注意隐藏的字符,错误的空格(nbsp-s而不是空格等),等等上。