2012-11-30 175 views
1

我有一個VB的Web應用程序,需要從互聯網上的一個令人興奮的網頁上讀取信息。因此我使用mshtml庫。我將html讀入ihtmldocument3接口。之後,我遍歷一個ihtmlelementcollection,在Visual Studio 2010 Debugger中一切正常。至少,第一次。當我第二次調試代碼時,在迭代了幾個元素之後,下一個元素不會返回任何內容,並且會得到一個異常。 (當我闖入代碼ihtmlelementcollection顯示0項。)當我重命名所有的變量,它運行正常,但再次,只有第一次。迭代通過IHtmlElementCollection

這裏是我用來調試的代碼。我列出了實際的代碼,因爲它會響應一個異常(空引用)。我是否需要手動發佈集合或其他東西,還是我在做一些愚蠢的事情?

'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

我認爲通過這一點你已經解決了這個問題這樣或那樣,但我想我會建議HtmlAgilityPack。它的優點是被編寫來支持這種類型的場景,並且(據我所知)是一個本地的.NET庫,而不是基於COM的。這可能更適合你的情況。