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





5.00/5 (11投票s)
这是“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);
}