【发布时间】:2022-01-15 23:49:46
【问题描述】:
我想使用来自mshtml 库的HTMLDocument 对象。我试图将 HTML 分配给文档:
var doc = new mshtml.HTMLDocument();
var html = File.ReadAllText(@"path_to_html_file");
doc.body.innerHTML = html; // <-- this line throws error
但是,我在第三行得到错误:
System.NullReferenceException: '对象引用未设置为 对象的实例。'
mshtml.DispHTMLDocument.body.get 返回 null。
我尝试使用动态代码,但也没有用:
dynamic doc = Activator.CreateInstance(Type.GetTypeFromProgID("htmlfile"));
在这种情况下,我收到以下错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
'无法对空引用执行运行时绑定'
有没有办法解决这个问题?谢谢!
更新:VBA 代码
Sub GetData()
Dim doc As MSHTML.HTMLDocument
Dim fso As FileSystemObject, txt As TextStream
Set doc = New MSHTML.HTMLDocument
Set fso = New FileSystemObject
Set txt = fso.OpenTextFile("path_to_html_file")
doc.body.innerHTML = txt.ReadAll() '// <-- No error here
txt.Close
End Sub
【问题讨论】:
-
你确定文件的路径有效吗?
-
@preciousbetine 问题不是与文件有关。
-
@preciousbetine 我在 VBA 中使用了相同的代码(已对其进行了调整) - 它运行良好。
-
您的文档
body属性似乎为空。为什么要尝试创建新文档而不是引用doc变量到现有文档? -
@ymz 是的,我知道问题在于
body是null。问题是 - 为什么它在 VBA 中有效,但在 C# 中无效。