iOS html解析1(包含中文字元)

2021-06-08 23:55:53 字數 2726 閱讀 4480

htmlparser

方法可以參考

tfhpple方法的使用可以看

tfhpple,因為它很簡單,也好用,但是它的功能不是很完完善。比如,不能獲取children node。它是用xpath來定位和解析html或者xml。

xpath教程:

具體的方法可以參考:(英文**介紹)

objective c**  

nsdata *htmldata = [nsstring stringwithcontentsoffile:[nsurl urlwithstring:@""] encoding:nsutf8stringencoding error:nil];  

會報:[nsurl getfilesystemrepresentation:maxlength:]: unrecognized selector sent to instance 0x6bcad20

objective c**  

nsdata *htmldata  = [nsstring stringwithcontentsofurl:[nsurl urlwithstring:@""] encoding:nsutf8stringencoding error:nil];  

匹配還是有問題

應該這個更合適點

objective c**  

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@"  

"]];  

下面講一下我自己實現的過程中的關鍵**:

解析非utf-8頁面的思路 :

把網路流返回的nsdate的gb2312(假設是這個)轉換成tfhpple能正確解析的utf-8編碼的nsdata;

將其中一行的轉換成utf-8形式的

可以採用如下兩種方案解決:

方法一:

objective c**  

//轉換成gbk編碼  

nsstringencoding gbencoding = cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000);  

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@"可以是非utf-8的網頁"]];  

nsstring *htmlstr = [[[nsstring alloc] initwithdata:htmldata encoding:gbencoding] autorelease];  

方法二:

objective c**  

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@"可以是非utf-8的網頁"]];  

cfstringref bgcfstr = cfstringcreatewithbytes(null, [htmldata bytes], [htmldata length], kcfstringencodinggb_18030_2000, false);  

nsstring *gbhtmlstr = (nsstring *)bgcfstr;  

方法一或者二選其一,然後加下面的**就可以實現簡單解析了

objective c**  

nsstring *utf8htmlstr = [htmlstr stringbyreplacingoccurrencesofstring:@""

withstring:@""];  

nsdata *htmldatautf8 = [utf8htmlstr datausingencoding:nsutf8stringencoding];  

tfhpple *xpathparser = [[tfhpple alloc] initwithhtmldata:htmldatautf8];  

nsarray *elements  = [xpathparser search:@"//option"];   

tfhppleelement *element = [elements objectatindex:0];  

nsstring *h3tag = [element content];   

nslog(@"%@",h3tag);  

mlabel.text = h3tag;  

[xpathparser release];  

[htmldata release];  

很有用的**:

碰到的問題:nsdata --》nsstring

nsdata

*htmldata = [htmlstr datausingencoding:nsutf8stringencoding];

nsstring --》nsdata

nsstring

*htmlstr = [[[

nsstring

alloc] initwithdata:htmldata encoding:nsutf8stringencoding]autorelease];

iOS html解析1(包含中文字元)

htmlparser 方法可以參考 tfhpple方法的使用可以看 tfhpple,因為它很簡單,也好用,但是它的功能不是很完完善。比如,不能獲取children node。它是用xpath來定位和解析html或者xml。xpath教程 nsdata htmldata nsstring string...

藍芽4 0(包含BLE)簡介

國際藍芽聯盟 bt sig,ti 是 企業成員之一 通過的乙個標準藍芽無線協議。主要的新特性是在藍芽標準版本上新增了4.0 藍芽規範 2010 年6 月 針對無線應用程式不 低功耗 低延遲 小資料報 癿傳輸需求 主要是圍繞手機和個人電腦系統 但也可以用亍其他應用 程式 設計蘋果外圍無需 mfi mf...

20 包含min的函式

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 在該棧中,呼叫min push及pop的時間複雜度應為o 1 把每次壓棧時的最小元素 每次新壓棧元素和之前的最小元素進行比較 放進另外乙個專門存放最小值的輔助棧中。例如 1 初始空棧,壓入元素3,目前3是最小值,放入輔助棧,...