65.9K
CodeProject 正在变化。 阅读更多。
Home

HTML 解析器 C++(演示项目)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (11投票s)

2013 年 10 月 4 日

CPOL

1分钟阅读

viewsIcon

72054

downloadIcon

4035

这是“HTML 阅读器 C++ 类库”的示例项目。

引言

这是一个使用 这个微型 HTML 解析器库 开发的**示例项目**。其主要目的是展示该库的使用方法。但是,我为该库添加了一些额外的功能。该项目支持 UNICODE 构建。代码将 HTML 标签转换为树模型,并公开一个函数来检索特定的 HTML 元素。 

一个 **HTML 元素** 是一个解析到 文档对象模型 中的 HTML 文档或“网页”的单个组件。

在 HTML 语法中,大多数元素都用起始标签和结束标签编写,内容位于两者之间。一个 **HTML 标签** 由元素名称组成,并被 尖括号 包围。结束标签在起始尖括号后还有一个斜杠,以将其与起始标签区分开来。

<p>在 HTML 语法中,大多数元素都用...</p>

在起始/结束标签之间,可以存在任意数量的其他标签。该项目提供了一种搜索特定标签的方法,并指定该标签的属性和值。然后提取该元素的**内容**。它是 Microsoft 的 MSHTML 解析器(充满内存泄漏)的一个廉价替代方案。

Using the Code

AClass 目录中的文件添加到您的项目中。

包含您可能需要的某些头文件,例如

#include "AClass/LiteHTMLReader.h"  
#include "AClass/HtmlElementCollection.h"

实例化将解析 HTML 字符串的读取器。

CLiteHTMLReader theReader;
CHtmlElementCollection theElementCollectionHandler;
theReader.setEventHandler(&theElementCollectionHandler);  

如果您想获取具有特定属性的特定标签集,请使用

 theElementCollectionHandler.InitWantedTag(_T("style"), _T("id"),_T("sss"));

调用解析器函数。最后,theElementCollectionHandler 将填充解析后的结构。

 theReader.Read(m_szHtmlPage)

现在开始将元素的文本检索到 CString var

for (int i=0;i<theElementCollectionHandler.GetNumElementsFiltered();i++){
    theElementCollectionHandler.GetOuterHtml(i, szTxt, 1);
}
© . All rights reserved.