解析html程序(C#版)——遍历各个节点(mshtml)
来源:互联网 发布:实时定量pcr数据分析 编辑:程序博客网 时间:2024/05/16 10:07
/*
在项目里引用了mshtml.dll,并且引用命名空间:using mshtml;
首先,参数html就是html文本内容(里面有markup标记和显示文本等等)
其次,getHtmlDisplayContent这个函数就是获取html里浏览器上可看到的内容,即从源码中取出显示文本。
最后,traverseNodes是个人写的一个遍历各个节点的一个小小递归程序,没考虑效率什么的,只是想知道怎么使用IHtmlDocument2和IHtmlDocument3接口
Note:当html文档不规范时,比如在<!Document....之前还有别的标记或者符号时,加载工作受到严重影响,此时估计是解析不出来了,我开始还不知道为什么解析有些html时卡住了,原来是因为这些html文档在html标记前有\n\n\n....等。。。
*/
private static string getHtmlDisplayContent(string html)
{
string cont = "";
mshtml.HTMLDocumentClass oc = new mshtml.HTMLDocumentClass();
mshtml.IHTMLDocument2 doc2 = oc;
doc2.write(html);
mshtml.IHTMLDocument3 HTMLDocument = (mshtml.IHTMLDocument3)doc2;
traverseNodes(HTMLDocument.documentElement, ref cont);
//mshtml.IHTMLTitleElement title = (mshtml.IHTMLTitleElement)doc2.title;
/* cont += doc2.title.ToString();
mshtml.IHTMLBodyElement body = (mshtml.IHTMLBodyElement)doc2.body;
if (body.text!=null)
cont += body.text.ToString();
* */
doc2.close();
return cont;
}
private static void traverseNodes(mshtml.IHTMLElement parentNode,ref string cont)
{
if (parentNode.innerText!=null)
cont += parentNode.innerText;
mshtml.IHTMLElementCollection nodes = (IHTMLElementCollection)parentNode.children;
IEnumerator ienum= nodes.GetEnumerator();
while (ienum.MoveNext())
{
IHTMLElement node = (IHTMLElement)ienum.Current;
traverseNodes(node,ref cont);
}
}
- 解析html程序(C#版)——遍历各个节点(mshtml)
- 使用MSHTML解析HTML代码
- 使用MSHTML解析HTML页面
- C# 解析xml文件各个节点
- 如何MSHTML命名空间解析HTML文件
- VC6.0 使用mshtml解析html
- 如何MSHTML命名空间解析HTML文件(MSHTML::IHTMLDocument2Ptr 提示错误)
- Delphi 通过MSHTML实现一个HTML解析类
- VC MSHTML解析HTML获得RSS源CparseHTML类
- Delphi通过MSHTML实现一个HTML解析类
- C#遍历树节点
- c#遍历寻找节点
- ++ 使用MSHTML分析html
- jsoup Cookbook——解析和遍历一个html文档
- 解析XML字符串,得到各个节点数据
- 第一步:使用mshtml获取html文档dom树,解析html结构,进行高亮标记
- C#递归遍历TreeView节点
- C# 遍历TreeView所有节点
- 基于CAN和Labview的监控系统2
- 结构型模式:Flyweight(享元)
- 8大你不得不知的Android调试工具
- Android之单元测试
- 数组大折腾
- 解析html程序(C#版)——遍历各个节点(mshtml)
- MySQL锁定状态查看命令
- brk(), sbrk() 用法详解
- 连接信号与响应函数---QT
- Java--------异常处理
- 行为模式:Memento(备忘录)
- 结构型模式: Composite(组合)
- 行为模式:Command(命令)
- 行为模式: Mediator(中介者)