【问题标题】:HtmlAgilityPack interfering with my code (not a HtmlAgilityPack question)HtmlAgilityPack 干扰我的代码(不是 HtmlAgilityPack 问题)
【发布时间】:2010-09-13 00:39:38
【问题描述】:

这是我的代码片段:

 Dim content As String = ""
    Dim web As New HtmlAgilityPack.HtmlWeb
    Dim doc As New HtmlAgilityPack.HtmlDocument()
    doc.Load(WebBrowser1.DocumentStream)
    Dim hnc As HtmlAgilityPack.HtmlNodeCollection = doc.DocumentNode.SelectNodes("//div[@class='address']/preceding-sibling::h3[@class='listingTitleLine']")
    For Each link As HtmlAgilityPack.HtmlNode In hnc
      Dim replaceUnwanted As String = ""
      replaceUnwanted = link.InnerText.Replace("&", "&") '
<span style="white-space:pre"> </span>  content &= replaceUnwanted & vbNewLine
    Next
'I have a bunch of code here I removed ------------------------------
      Dim htmlDoc As HtmlDocument = Me.WebBrowser2.Document
      Dim visibleHtmlElements As HtmlElementCollection = htmlDoc.GetElementsByTagName("TD")
      Dim found As Boolean = False
      For Each str As HtmlElement In visibleHtmlElements
        If Not String.IsNullOrEmpty(str.InnerText) Then
          Dim text As String = str.InnerText
          If str.InnerText.Contains(parts(2)) Then
            found = True
          End If
        End If
      Next

Me.WebBrowser2.Document 出现错误:

“'System.Windows.Forms.HtmlDocument' 类型的值无法转换为 'HtmlAgilityPack.HtmlDocument'。

另外一个是 htmlDoc.GetElementsByTagName

“GetElementsByTagName”不是“HtmlAgilityPack.HtmlDocument”的成员。

当我不使用 HAP 时,代码可以工作,但我需要导入它来做某事,现在它干扰了这个。请帮忙。

【问题讨论】:

    标签: vb.net html-agility-pack


    【解决方案1】:

    问题在于HtmlAgilityPackSystem.Windows.Forms 都有一个名为HtmlDocument 的类型。

    你可能只需要修复这一行:

    ' Here the VB compiler must think you mean HtmlAgilityPack.HtmlDocument: '
    Dim htmlDoc As HtmlDocument
    

    ...通过将其更改为:

    Dim htmlDoc As System.Windows.Forms.HtmlDocument
    

    一般中,解决此类问题的一个好方法是使用Imports 语句为名称冲突的类型提供别名,如下所示:

    Imports AgilityDocument = HtmlAgilityPack.HtmlDocument
    Imports FormsDocument = System.Windows.Forms.HtmlDocument
    

    然后,您将在代码中使用这些别名之一,而不是输入共享名称。所以,例如:

    Dim doc As New AgilityDocument
    Dim htmlDoc As FormsDocument = Me.WebBrowser2.Document
    

    【讨论】:

    • 感谢 Dan 的帮助,非常感谢。
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2013-10-15
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多