1

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

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

'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
4

1 回答 1

0

我假设此时您已经以某种方式解决了问题,但我认为我会建议HtmlAgilityPack。它的优点是只支持这种类型的场景,并且(据我所知)是一个原生的 .NET 库,而不是基于 COM 的。它可能更适合您的情况。

于 2013-02-22T22:10:08.683 回答