C++ 使用Htmlcxx解析Html内容(VS编译库文件)
2015-04-23 21:08
519 查看
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.所开发的项目的头文件中添加以下内容:
14.具体使用代码:
附上htmlcxx学习资料:http://blog.csdn.net/youfangyuan/article/details/7816518
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
相关文章推荐
- vs2013 c++ 编译配置jsoncpp和使用jsoncpp解析json文件
- 使用js实现读取csv文件内容解析到html页面中
- 【vscode】使用vscode多源文件结合opencv编译调试 C/C++
- vs2010环境 c++ 使用htmlcxx解析html
- vs2010环境 c++ 使用htmlcxx解析html .转
- 使用ifstream和getline读取文件内容 c++
- VS下如何配置才能使用 cl 命令行方式编译 C/C++ 程序
- 用mingw编译C++工程;程序里面的cout<<"aaa";cmd运行c++程序,aaa内容在控制台不显示,如何将aaa输出到控制台屏幕并将控制台内容写到一个文件中。
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- 编译---没有引用头文件却能使用头文件的内容
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- 使用javac编译java文件和使用javah生成C/C++头文件 遇到找不到类的问题
- Hpple-iOS解析HTML-hpple读取html文件内容的代码 更新了下拉刷新功能
- 使用Eclipse CDT插件开发C/C++时设置保存时编译文件
- 使用ifstream和getline读取文件内容[转自c++博客]
- 使用ifstream和getline读取文件内容[c++]
- 使用ifstream和getline读取文件内容[c++]
- 使用ifstream和getline读取文件内容[c++]
- 使用Manifest和Attributes类解析形如MANIFEST.MF格式文件内容