HppleiOS解析HTMLhpple读取html文件内容的代码 更新了下拉刷新功能

https://github.com/topfunky/hpple

hpple读取html文件内容的代码 更新了下拉刷新功能    (在iOS代码库中浏览本帖)

 
 
其实我写的不多,也就是汇集一些开源代码,然后实现了一下功能,搜索水区标题,下拉刷新。
代码不好看,大家多批评。

下拉刷新用到了EGOTableViewPullRefresh ,论坛里面有下载

这里用到了一个开源的框架
hpple,https://github.com/topfunky/hpple,很轻便,能读取html和xml数据,在用到一点xPath知识就可以了。


先下载hpple 
然后在你得工程里面导入libxml2
具体步骤看截图,
Header Search Path中加入${SDKROOT}/usr/include/libxml2
Other Linker Flag中加入-lxml2

 


 

已截取cocoachina为例子主要代码如下
#define WebSite @"http://www.cocoachina.com/bbs/simple/?f5.html"

//NSStringEncoding encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//NSData *siteData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:WebSite]] dataUsingEncoding:encode];
NSData*siteData = [[NSDataallocinitWithContentsOfURL:[NSURLURLWithString:WebSite]];

TFHpple *xpathParser = [[TFHpple allocinitWithHTMLData:siteData];
//NSArray *elements = [xpathParser search:@"//a[@class='subject']"];
NSArray*elements = [xpathParser search:@"//ul[@type='1']/li[position()<9]/a"];
//TFHppleElement *element = [elements objectAtIndex:3];
NSMutableArray*arr = [[NSMutableArrayallocinit];

for (TFHppleElement *element in elements) {

NSString *strs = [element content];
NSLog(@"cc: %@", strs);
[arr addObject:strs];
NSLog(@"arr: %@", arr);

    }
self.listData = arr;
NSLog(@"listData: %@"listData);
[arr release];
[xpathParser release];


需要注意的是,网上的例子大多是用到NSData*siteData = [[NSStringstringWithContentsOfURL:[NSURLURLWithString:WebSite]] dataUsingEncoding: ];
这么写中文会出现乱码,不管你编码用bgk还是utf8都是乱码。
改成 NSData*siteData = [[NSDataallocinitWithContentsOfURL:[NSURLURLWithString:WebSite]];就不会有乱码了。
具体为什么我也搞不动,请高手指点指点。


"//ul[@type='1']/li[position()<9]/a" 这个里面是xPath,可以参照xPath语法察看。


资源:
hpple下载 https://github.com/topfunky/hpple
xPath教程 http://www.w3school.com.cn/xpath/xpath_syntax.asp
外国网站的关于hpple的教程 http://blog.objectgraph.com/index.php/2010/02/24/parsing-html-iphone-development/

我做的一个demo

 CocoaChina.zip (61 K) 下载次数:1129
原文地址:https://www.cnblogs.com/greywolf/p/2861657.html