在iOS中使用libxml2解析(X)Html的示例

时间:2011-07-15 07:39:50

标签: objective-c ios html-parsing libxml2

最近我开始在iOS iPhone项目中使用libxml2 lib。我读了一些有用的链接,比如:

http://laurentparenteau.com/blog/2009/12/parsing-xhtml-in-c-a-libxml2-tutorial/

以及一些非常好的帖子:

http://bill.dudney.net/roller/objc/entry/libxml2_push_parsing

我设法检索远程html(使用ASIHTTPRequest)并成功获取'didReceiveData'事件上的数据(NSData),推送到包含使用 htmlCreatePushParserCtxt (SAX样式)创建的解析器的包装类。我很好地得到了startDocument 和endDocument回调。在'startElement'和'characters'回调中,我打印'localname'参数( const xmlChar )。在控制台中,我看到它找到了'html',然后是'body',然后是'p'标签,但后来我收到了很多无法识别的字符(有时甚至看起来像中文......)......

无论如何,在进入大量代码细节之前,我想问一下是否有人在基于Objective-c的项目中使用libxml2解析(x)html的工作示例?我试着谷歌搜索更多的2提到的链接,但直到现在没有运气。

2 个答案:

答案 0 :(得分:0)

我建议由{alan quartemain http://blog.alanquatermain.me/2013/01/09/using-aqxmlparser-and-friends/

提出AQXMLParser

它是libxml2的一个瘦包装器,比NSXMLParser更多的性能。

HTMLMode属性设置为yes,因此它在html模式下使用libxml ..(我多次使用它,即使使用无效的html也很好)

答案 1 :(得分:-3)

为什么要在Apple的内置libxml2课程中使用NSXMLParser?如果您正在为iOS创建应用程序,那么使用Foundation类比使用C库更有意义。您可以访问NSXMLParser on Apple's website的文档。

如果您不想直接使用NSXMLParser,可以尝试使用NSXMLDocument解析XML,它具有易于使用的- (id)initWithData:(NSData *)data options:(NSUInteger)mask error:(NSError **)error方法来解析XML数据。您甚至可以使用init方法的NSXMLDocumentTidyHTML选项将HTML数据读取为XHTML。