NSXMLParser在<! - ?xml version =“1.0”上抛出NSXMLParserErrorDomain#64? - >

时间:2011-07-17 20:16:49

标签: ios cocoa-touch

如果NSXMLParser找到以下行,则会引发NSXMLParserErrorDomain#64:

<?xml version="1.0"?>
如果我是initWithContentsOfUrl或initWithData,那么

没有区别。 xml来自php5.3 apache系统。如果省略此行,则文档将无错误地解析。我们拥有服务器,所以我可以过滤掉这一行,但我宁愿修复解析器。

2 个答案:

答案 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而不是空格等),等等上。