通过IHtmlElementCollection迭代

时间:2012-11-30 15:32:38

标签: asp.net vb.net

我有一个VB web应用程序需要从互联网上的一个令人兴奋的网页上读取信息。因此我使用mshtml库。我将html读入ihtmldocument3界面。之后,我遍历了一个ihtmlelementcollection,在Visual Studio 2010调试器中一切正常。至少,第一次。当我第二次调试代码时,在迭代几个元素之后,下一个元素什么都不返回,我得到一个异常。 (当我进入代码时,ihtmlelementcollection显示0个项目。)当我重命名所有变量时,它会正常运行,但同样只是第一次运行。

这是我用来调试的代码。我概述了实际的代码,因为它响应异常(null引用)。我是否需要手动发布集合或其他东西,还是我做了一些愚蠢的事情?

'global variable
Private tables as IHTMLElementCollection
...........................................
        Dim tableChildren As IHTMLElementCollection = tables(3).children
        Dim trElements As IHTMLElementCollection = tableChildren.item(0).getElementsByTagName("tr")

        Dim intCount As Integer 'just for debugging purposes
        For Each element As IHTMLElement In trElements
            intCount += 1 'for debugging purposes
            Debug.Print(intCount.ToString & vbNewLine & element.innerHTML)
            'strLine1 = element.children(0).innerText
            'strLine2 = element.children(1).innerText
            'and so on...
        Next

1 个答案:

答案 0 :(得分:0)

我认为,到目前为止,您已经以这种或那种方式解决了问题,但我认为我会建议HtmlAgilityPack。它的优点是可以编写支持这种类型的场景,并且(据我所知)是本机.NET库而不是基于COM的。它可能更适合您的情况。