Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C#: HtmlDocument object has no constructor?

Tags:

dom

c#

parsing

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.

like image 994
Tom Corelis Avatar asked Mar 27 '09 22:03

Tom Corelis


2 Answers

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.

like image 90
tvanfosson Avatar answered Oct 10 '22 01:10

tvanfosson


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

like image 33
Jungchan Avatar answered Oct 10 '22 01:10

Jungchan