iOS開發(fā)中的Html解析方法
初次解析html,使用是網(wǎng)上的第三方類;我使用的是以下三個類,將其添加到項目中:
- #import "TFHpple.h"
- #import "TFHppleElement.h"
- #import "XPathQuery.h"
添加以上三個類必須添加一個庫,這個庫是:libxml2.2.dylib。并且還需要設(shè)置一些路徑參數(shù),否則會一直報錯;這個路徑的設(shè)置,在 targets中,在build settings搜索Header Search Paths,將debug和release設(shè)置不同的值;
debug的值設(shè)置成:/usr/include/libxml2
release的值設(shè)置成:${SDKROOT}/usr/include/libxml2
將以上的設(shè)置好了以后,就是使用的時候;將#import "TFHpple.h"添加到解析html的類中,再寫解析方法;
一般思路如下:
1.首先將網(wǎng)頁的html轉(zhuǎn)換成oc能夠認(rèn)識的NSString數(shù)據(jù);用到的方法如下:
- NSString *dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:htmlString] encoding:NSUTF8StringEncoding error:nil]; //htmlString是html網(wǎng)頁的地址
2.將dataString轉(zhuǎn)換成NSData,給TFHpple類用
- NSData *htmlData = [dataString1 dataUsingEncoding:NSUTF8StringEncoding];
3.設(shè)置html中節(jié)點,根據(jù)節(jié)點取值,例如<p>.....</p>,可以用節(jié)點來取值;
如NSString *nodeString = @"//p";
使用htmlData和nodeString,解析自己需要的值:
- TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData];
- NSArray *elements = [xpathParser searchWithXPathQuery:nodeString]; //這個數(shù)組中就有需要的值
(TFHppleElement中提供很多方法,可以用這些方法獲取elements的值,如- (NSArray *) children;)
Demo鏈接:http://code4app.com/ios/%E8%A7%A3%E6%9E%90HTML/5167ca396803faf447000002