C++ 使用Htmlcxx解析Html内容(VS编译库文件)
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
C++ 使用Htmlcxx解析Html内容(VS编译库文件)的更多相关文章
- 浅谈独立使用NDK编译库文件(Android)
阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...
- vs 编译库文件
vs编译的库文件 静态库 debug和release版本 需要分开编译,我编译和实践的结果. 但是我也发现有的debug release都用同一个(搞不清楚). 然后添加到工程应用. 静态库 附件 ...
- vs 编译库文件 Qt编译库文件
QT 库能不能用 需要关注是minGW 还是MSVC编译的 Qt MinGW与MSVC对比 转:https://blog.csdn.net/u013185164/article/details/48 ...
- ios编译库文件时出现的问题
1. 警告:directory not found for option "xxxxxxxx" 文件路径未找到 选择工程, 编译的 (targets) 选择 Build Setti ...
- golang编译库文件方式
// as c-shared library $ go build -buildmode=c-shared -o nautilus.a nautilus.go // as c-archive $ go ...
- C++创建自己的库文件(dll文件创建和编译)
创建编译库文件有个好处就是不容易被修改,加密的,方便调用,但是缺点是不容易查看其中的内容,反编译比较麻烦.下面让我们使用VC创建编译自己的库文件吧.常用的函数,不常更改的,应该放到库文件里,所以库文件 ...
- Qt使用预编译头文件Using Precompiled Headers(提升10倍以上)
预编译头文件是被很多编译器用来编译稳定的代码以及将编译好的稳定代码存储在二进制文件中用于提升编译性能.在随后的编译中,编译器将加载存储状态继续编译指定的文件.每一个随后的编译将更快,因为稳定的代码不需 ...
- Modelsimse10.1如何编译altera库文件以支持IP仿真
前言 se版本默认没有ip之类的库支持,如果你用到了pll之类的ip,仿真前就得把库编译好. 流程 本例用的是altera的verilog库. 1.首先在modelsim安装目录下新建altera文件 ...
- Modelsimse10.4如何编译altera库文件以支持IP仿真
前言 se版本默认没有ip之类的库支持,如果你用到了pll之类的ip,仿真前就得把库编译好. 版本:Modelsim10.4se 流程 readme:实现有版本两个,任选.理论都是一样的,把v文件编译 ...
随机推荐
- *[codility]MissingInteger
今天开始刷刷codility上respectable的题目,难度适中. https://codility.com/demo/take-sample-test/missing_integer 本题是找出 ...
- s1.charAt(x)=='a'
public class hhh{public static void main(String[]args) { String s1="hkdhskhegoihwhonfdsaaa&qu ...
- linux下centos安装android sdk最新全面教程【可行】
1.此教程解决了当你配置完android sdk的环境变量以后,可能在命令中打入adb还是提示错误.现在给大家提供最新解决方法,此方法同时可以解决最新的centos 6.5版本 2.本教程支持最新ja ...
- SQL Server数据库多种方式查找重复记录
摘要:SQL Server是一个关系数据库管理系统,SQL Server数据库的应用是很多的,SQL Server数据库赢得了广大用户的青睐,本文将主要为大家介绍关于SQL Server数据库中查找重 ...
- 源代码Log
MVC5源代码 https://github.com/aspnet/Mvc MVC4源代码 http://aspnetwebstack.codeplex.com/
- WCF-学习笔记概述之计算服务(1)
关于WCF的介绍,在此不再赘述,其他地方应有尽有.直接开始实例,第一个实例以一个简单的计算服务为例,本人是学习了蒋金楠的<WCF全面解析>. 1.构建解决方案 Interface:用于定义 ...
- GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别
GetKeyState.GetAsyncKeyState.GetKeyboardState函数的区别: 1.BOOL GetKeyboardState( PBYTE lpKeyState );获得所有 ...
- Android用户界面布局(layouts)
Android用户界面布局(layouts) 备注:view理解为视图 一个布局定义了用户界面的可视结构,比如activity的UI或是APP widget的UI,我们可以用下面两种方式来声明布局: ...
- HDU 4565 So Easy!(矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4565 题意: 题意: #include <iostream>#include <cs ...
- Js 读写cookies
//写cookies函数 function setCookie(name, value)//两个参数,一个是cookie的名子,一个是值 { var Days = 30; //此 cookie 将被保 ...