Tom Corelis
Tom Corelis

Reputation: 5050

C#: HtmlDocument object has no constructor?

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.

Upvotes: 9

Views: 19353

Answers (2)

Jungchan
Jungchan

Reputation: 97

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

Upvotes: 4

tvanfosson
tvanfosson

Reputation: 532735

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.

Upvotes: 7

Related Questions