1.下載Htmlcxx,http://sourceforge.net/projects/htmlcxx/
2.解壓htmlcxx-0.85.tar.gz
3.打開htmlcxx.vcproj,注意是htmlcxx.vcproj,不是下面的htmlcxxapp.vcproj
4.使用VS打開htmlcxx.vcproj,需要對項目進行轉換
5.選擇編譯模式:Debug或Release模式,具體由需要使用到Htmlcxx庫文件的項目的編譯模式決定,但注意Debug對Debug,Release對Release,不要混亂
6.右擊htmlcxx,選擇屬性,可以看到運行庫默認的是”多線程調試/MTD“:
7.具體選擇運行庫時,由由需要使用到Htmlcxx庫文件的項目的運行庫決定,由於本人項目使用的是”多線程調試 DLL (/MDd)“,故選擇”多線程調試 DLL (/MDd)“進行編譯
8.報錯:
9.排錯:
改成
10.在所開發項目文件夾中,新建”htmlcxx“文件,里面添加兩個子文件夾”lib“和”include“
11.將編譯好的htmlcxx.lib(Debug或者Release,由htmlcxx編譯模式決定)拷貝到lib文件夾,將html文件夾中所有的.h頭文件和ParserSax.tcc添加到include文件夾
12.選擇所開發項目的項目屬性,添加庫文件htmlcxx.lib到項目中(VC++目錄下的庫目錄中添加htmlcxx.lib路徑即可)
13.所開發的項目的頭文件中添加以下內容:
#include <string> #include "htmlcxx/include/ParserDom.h" using namespace std; using namespace htmlcxx; #pragma comment(lib,"htmlcxx.lib")
14.具體使用代碼:
void NuistMoney::GetLogWeekTxt() { if (logined==true) { logWidget->clear(); lbmessage->setText(tr("正在查詢本周消費,請稍候...")); QString data=GetToAllNet(tr("http://www.**************.com.cn")); string html=data.toStdString(); HTML::ParserDom parser; tree<HTML::Node> dom = parser.parseTree(html); tree<HTML::Node>::iterator it ; tree<HTML::Node>::iterator end; //輸出所有的文本節點 it= dom.begin(); end= dom.end(); QString str; QString str1; QString str2; for(; it != end; ++it) { if (strcasecmp(it->tagName().c_str(), "td") == 0)//首先判斷是否是td字段 { it+=1;//如果是td字段,則讀取下一個字段的值,<td>字段1</td><td>字段2</td>,獲取字段2 if ((!it->isTag()) && (!it->isComment())) { if (it->text()!=" ") { str1=QString::fromStdString(it->text()).trimmed(); } } if (str1==tr("交易金額")||str1==tr("卡余額")) { it+=5; } else { it+=3; } str2=QString::fromStdString(it->text()).trimmed(); str=tr("\t")+str1+tr("\t\t")+str2; logWidget->addItem(str); } if (str1==tr("卡余額")) { logWidget->addItem(tr(" ")); str1.clear(); } } } else { lbmessage->setText(tr("您未登陸,請您先登陸...")); } }
附上htmlcxx學習資料:http://blog.csdn.net/youfangyuan/article/details/7816518