• 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("	")+str1+tr("		")+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

  • 相关阅读:
    Entity Framework笔记(二)
    C#依据word模版动态生成文档
    Entity Framework笔记(一)
    Ajax基础知识(二)
    Ajax基础知识(一)
    ASP.Net中使用XMLDataSource
    ubuntu安装jdk eclipse mysql等
    使用SQL Server Management Studio 创建数据库备份作业
    Visual Studion 2013 HTML 如何打开设计图
    Lodop6 以上打印控件使用,详参考自带说明文档,打印样式及文字大小要特殊设置一下
  • 原文地址:https://www.cnblogs.com/striver-zhu/p/4451781.html
Copyright © 2020-2023  润新知