有没有办法将字符串变量放入新声明的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
答案 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
也会有效。我相信你可以解决这个问题,但这对我的需求来说太复杂了。