我正在使用NSXMLParser解析一些HTML,并且只要遇到&符号就会遇到解析器错误。在解析它之前我可以过滤出&符号,但我宁愿解析那里的所有内容。
它给了我错误68,NSXMLParserNAMERequiredError:名称是必需的。
我最好的猜测是它是一个字符集问题。我对字符集的世界有点模糊,所以我认为我的无知正在咬我的屁股。 源HTML使用charset iso-8859-1,所以我使用此代码初始化Parser:
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
NSData *dataEncoded = [[dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] autorelease];
NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];
有什么想法吗?
答案 0 :(得分:7)
答案 1 :(得分:2)
您确定您拥有有效的XML吗?你需要有像&amp ;;这样的特殊字符。转义后,您应该在原始XML文件中看到&
答案 2 :(得分:0)
通过NSString
编码数据为我工作,无论如何你是自动释放一个没有被你自己分配的对象(dataUsingEncoding),所以它崩溃了,解决方案是:
NSString *dataString = [[NSString alloc] initWithData:data
encoding:NSISOLatin1StringEncoding];
NSData *dataEncoded = [dataString dataUsingEncoding:NSUTF8StringEncoding
allowLossyConversion:YES];
[dataString release];
NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];