将字符串转换为HTML文档

时间:2014-06-27 18:03:50

标签: vb.net string dom

有没有办法将字符串变量放入新声明的htmldocument变量而不通过webbrowser?我试过这个

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim v As New WebClient
    Dim page As String = ""
    Dim ahtm As HtmlDocument = Nothing

    page = v.DownloadString("http://www.google.com")
    ahtm.Body.InnerText = page                              'not working
    ahtm.Write(page)                                        'not working neither

End Sub

4 个答案:

答案 0 :(得分:1)

原因是你宣布ahtm为Nothing。实例化它,看看它是否有效。

更新: HtmlDocument是一个非托管类(IHtmlDocument)的包装器。尝试声明WebBrower,然后将ahtm分配给Web浏览器文档属性。

WebBrowser wb = new WebBrowser();
HtmlDocument atm = wb.Document;

换句话说,Web浏览器是最简单的方法。

更新: 另一种方法是使用像HtmlAgilityPack这样的东西。 http://htmlagilitypack.codeplex.com/

答案 1 :(得分:1)

您可以在不使用Navigate()的情况下使用WebBrowser。

Public Function CreateDocument(ByVal url As String) As HtmlDocument
      Dim wb As New WebBrowser()
      wb.DocumentText=New WebClient().DownloadString(url)
      Return wb.Document
End Function

答案 2 :(得分:0)

试用HTMLAgility Pack。

您可以在此处阅读:http://html-agility-pack.net/

最新版本可通过NuGet获取。

所以你会做类似的事情:

Dim aHTML As New HTMLDocument
aHTML.Load(some string variable) 

请注意,您无法以这种方式加载网址。我不确定您是否确实要加载网址,或者提供的网址仅供参考。

答案 3 :(得分:0)

确保添加对Microsoft.mshtml的引用。

    Private Function GetStatus(ByVal HTMLString As String) As mshtml.HTMLDocumentClass
          Dim htmlDocument As mshtml.IHTMLDocument2 = New mshtml.HTMLDocumentClass()
          htmlDocument.clear()
          htmlDocument.write(HTMLString)
          htmlDocument.close()

          Return htmlDocument
    End Function

你很可能会尝试HTMLAgility包,但这是第三方。我觉得尝试使用内置的东西会更好(除非第三方在功能和/或安全方面具有非常优越的性能)。然后,您必须担心许可和更新。除非您是多线程,否则使用Windows.Forms.WebBrowser也会有效。我相信你可以解决这个问题,但这对我的需求来说太复杂了。