C#: HtmlDocument object has no constructor?

2019-06-16 06:09发布

What's up with that? It seems the only way to get an working HtmlDocument object is copying the Document property of an mshtml/webbrowser control. But spawning that is sloooooooooooow. I'd like to avoid writing my own HTML parser and HtmlAgilityPack is copyleft.

Are there other sources of getting an instantiated HtmlDocument that I can dump HTML from a string into?

Or, is there a way to override HtmlElement's annoying habit of throwing a fit when using InnerHtml/OuterHtml with img tags and tr elements?

Edit: I'm referring to System.Windows.Forms.HtmlDocument. My apologies, I'm still new to C# and .Net and know very little about COM and some of the other things this topic brings up.

标签: c# parsing dom
2条回答
\"骚年 ilove
2楼-- · 2019-06-16 06:22

It has no constructor because it's just a wrapper class around an unmanaged object.

Reference: http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.aspx

HtmlDocument provides a managed wrapper around Internet Explorer's document object, also known as the HTML Document Object Model (DOM). You obtain an instance of HtmlDocument through the Document property of the WebBrowser control.

Depending on what you want it for, you may want to look at SGMLReader or the up-to-date community version.

查看更多
The star\"
3楼-- · 2019-06-16 06:33

Robust Programming?

When using the DOM through the WebBrowser control, you should always wait until the DocumentCompleted event occurs before attempting to access the Document property of the WebBrowser control. The DocumentCompleted event is raised after the entire document has loaded; if you use the DOM before then, you risk causing a run-time exception in your application.

http://msdn.microsoft.com/en-us/library/ms171712.aspx

查看更多
登录 后发表回答