首页 > 解决方案 > 如何在将 XML 响应文本解析为 HTMLDoc.body.innerHTML 时修复 VB.net 中的“对象引用未设置为对象的实例”

问题描述

我正在尝试使用 Visual Studio 将 XML 响应文本加载到 Windows 窗体应用程序中的 HTML 对象中,但它会引发错误

对象引用未设置为对象的实例

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim XMLReq As MSXML2.XMLHTTP60 = New MSXML2.XMLHTTP60
    Dim HTMLDoc As mshtml.HTMLDocument = New mshtml.HTMLDocument
    Dim Table As MSHTML.IHTMLElement
    URL = "https://tt.wiki.com/search?"
    XMLReq.open("GET", URL, False)
    XMLReq.send()
    If XMLReq.status <> 200 Then
        MsgBox("Error" & vbNewLine & XMLReq.status & " - " & XMLReq.statusText)
        Exit Sub
    End If
    Dim wb As WebBrowser = New WebBrowser
    HTMLDoc = wb.Document.DomDocument
    HTMLDoc.body.innerHTML = XMLReq.responseText   //object reference error occuring here//
    Table = HTMLDoc.getElementById("search_results")
End sub

错误发生在以下行:

HTMLDoc.body.innerHTML = XMLReq.responseText

标签: vb.netnullreferenceexception

解决方案


经过这么多尝试,我终于找到了答案....需要在访问其 body.innerHTML 方法之前将一些 HTML 代码分配给 HTMLDoc 对象。下面是代码......它对我来说很好用`

Dim XMLReq As MSXML2.XMLHTTP60 = New MSXML2.XMLHTTP60
Dim HTMLDoc As mshtml.HTMLDocument = New mshtml.HTMLDocument
Dim HTMLDoc1 As mshtml.IHTMLDocument = HTMLDoc
Dim Table As MSHTML.IHTMLElement
URL = "https://tt.wiki.com/search?"
XMLReq.open("GET", URL, False)
XMLReq.send()
If XMLReq.status <> 200 Then
    MsgBox("Error" & vbNewLine & XMLReq.status & " - " & XMLReq.statusText)
    Exit Sub
End If
 HTMLDoc1.write("<html><body>test</body></html>")
    HTMLDoc1.close()
    HTMLDoc = HTMLDoc1
    HTMLDoc.body.innerHTML = XMLReq.responseText
    Table = HTMLDoc.getElementById("search_results")`

推荐阅读