用HTMLDocumentClass分析Html代码(以及读取HtmlElement所有属性方法)

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

            HTMLDocumentClass doc = new HTMLDocumentClass();
            IHTMLDocument2 doc2 = doc;
            doc2.write(html);  //html就是外面传进来的html代码
使用的时候只需要递归doc对象childNodes即可

            IHTMLDOMChildrenCollection collect = (IHTMLDOMChildrenCollection)doc.childNodes;
            foreach (IHTMLDOMNode node in collect)
            {
                //因为关闭节点也会有(比如</a>,但是这样的节点会被定义为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就可操作所有属性了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值