博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用HTMLDocumentClass分析Html代码(以及读取HtmlElement所有属性方法)
阅读量:5742 次
发布时间:2019-06-18

本文共 1556 字,大约阅读时间需要 5 分钟。

大家可能经常会需要分析一段Html代码,有的人可能会用WebBrowser,这个方法不错,其实微软还提供了另一个组件,mshtml(引用Microsoft.mshtml,这个可能有好几个大家记得引用Framework目录下的那个),这个东西提供分析html代码的方法,而且用起来非常的方便。

 

            HTMLDocumentClass doc = new HTMLDocumentClass();             IHTMLDocument2 doc2 = doc;             //html就是外面传进来的html代码        doc2.write(html);

 使用的时候只需要递归doc对象childNodes即可

            IHTMLDOMChildrenCollection collect = (IHTMLDOMChildrenCollection)doc.childNodes;             foreach (IHTMLDOMNode node in collect)             {
                //因为关闭节点也会有(比如,但是这样的节点会被定义为HTMLUnknownElementClass)                 //所以要判断这个节点是不是未知节点不是才处理                 if (!(node is HTMLUnknownElementClass))                 {
             //获取属性集合                     IHTMLAttributeCollection attrs = (IHTMLAttributeCollection)node.attributes;                      foreach (IHTMLDOMAttribute attr in attrs)                     {
//只有specified=true的属性才是你要的                         if (attr.specified)                         {
                                                    }                     }                 }             }

 

顺便说一下,IHTMLDOMNode对象其实是所有节点(包括关闭节点比如"</a>"这个也算一个IHTMLDOMNode),所以大家判断是不是开头的节点只要判断一下是不是不等于HTMLUnknownElementClass

大家如果使用WebBrowser肯能一直有个困惑WebBrowser提供的HtmlElement对象没有提供Attribute属性集合,也就无法通过循环获得节点的所有属性,其实通过mshtml可以解决这个问题。大家可用DomDocument转换为HTMLDocumentClass

WebBrowser wb = new WebBrowser();            HTMLDocumentClass cls = (HTMLDocumentClass)wb.Document.DomDocument;

 

转换以后用得到的HTMLDocumentClass就可操作所有属性了。

转载于:https://www.cnblogs.com/wsxqaz/archive/2012/03/06/2381723.html

你可能感兴趣的文章
【记录】JS toUpperCase toLowerCase 大写字母/小写字母转换
查看>>
在 Linux 系统中安装Load Generator ,并在windows 调用
查看>>
Visifire charts ToolBar
查看>>
Mysql查询
查看>>
数据传输流程和socket简单操作
查看>>
ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)
查看>>
OC中KVC的注意点
查看>>
JQ入门(至回调函数)
查看>>
【洛天依】几首歌的翻唱(无伴奏)
查看>>
OpenSSL初瞻及本系列的博文的缘由
查看>>
ISO8583接口的详细资料
查看>>
tmux不自动加载配置文件.tmux.conf
查看>>
经验分享:JavaScript小技巧
查看>>
[MOSEK] Stupid things when using mosek
查看>>
程序实例---栈的顺序实现和链式实现
查看>>
服务的使用
查看>>
Oracle 用户与模式
查看>>
MairDB 初始数据库与表 (二)
查看>>
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>