Iphone NSXMLParser在安培上阻塞&;
我正在用NSXMLParser解析一些HTML,每当遇到符号时,它就会遇到解析器错误。我可以在解析它之前过滤掉符号,但我更愿意解析其中的所有内容 它给了我错误68,NSXMLParserNameRequestError:名称是必需的 我最好的猜测是这是一个角色集问题。我对角色集的世界有点模糊,所以我想我的无知是在咬我的屁股。 源HTML使用字符集iso-8859-1,因此我使用以下代码初始化解析器:Iphone NSXMLParser在安培上阻塞&;,iphone,objective-c,cocoa,nsxmlparser,Iphone,Objective C,Cocoa,Nsxmlparser,我正在用NSXMLParser解析一些HTML,每当遇到符号时,它就会遇到解析器错误。我可以在解析它之前过滤掉符号,但我更愿意解析其中的所有内容 它给了我错误68,NSXMLParserNameRequestError:名称是必需的 我最好的猜测是这是一个角色集问题。我对角色集的世界有点模糊,所以我想我的无知是在咬我的屁股。 源HTML使用字符集iso-8859-1,因此我使用以下代码初始化解析器: NSString *dataString = [[[NSString alloc] initWi
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
NSData *dataEncoded = [[dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] autorelease];
NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];
有什么想法吗?你确定你有有效的XML吗?您需要在原始XML文件中使用特殊字符,如&转义符,您应该看到
&代码>到其他海报:当然XML是无效的。。。它是HTML
您可能不应该尝试将NSXMLParser用于HTML,而是
若要更详细地了解原因,请查看。通过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];
您正在使用XML解析器解析HTML?这是怎么回事?(除非它是格式良好的XHTML,并且不使用HTML实体集。)不管怎样,一个空的符号在HTML和XML中都是无效的,所以你需要为现实世界中被破坏的HTML寻找一个解析器,这比XML解析困难得多。好吧,那么。这项工作用错了工具?谢谢你的提示。我可能不得不这么做。关于HTML的要点很好,NSXMLParser部分把我甩了。libxml2似乎是一个非常合理的选择。请参阅前一篇SO文章:请编辑您的答案并格式化代码(原样无法阅读)