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

问题描述 投票:4回答:2

最近我开始在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个链接,但直到现在没有运气。

objective-c ios html-parsing libxml2
2个回答
0
投票

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

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

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


-3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.