我有一个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
答案 0 :(得分:0)
我认为,到目前为止,您已经以这种或那种方式解决了问题,但我认为我会建议HtmlAgilityPack。它的优点是可以编写支持这种类型的场景,并且(据我所知)是本机.NET库而不是基于COM的。它可能更适合您的情况。