Hpple-iOS解析HTML-hpple读取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 = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData: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 = [[NSMutableArrayalloc] init];
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 = [[NSDataalloc] initWithContentsOfURL:[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
代码不好看,大家多批评。
下拉刷新用到了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 = [[NSDataalloc] initWithContentsOfURL:[NSURLURLWithString:WebSite]];
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData: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 = [[NSMutableArrayalloc] init];
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 = [[NSDataalloc] initWithContentsOfURL:[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