views:

117

answers:

2

How to convert HtmlDocument.DomDocument to string ?

+1  A: 

This example is a bit convoluted, but, assuming you have a form called Form1, with a WebBrowser control called webBrowser1, the variable content will contain the markup that forms the document:

private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.Url = new Uri(@"http://www.robertwray.co.uk/");          
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var document = webBrowser1.Document;
    var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)document.DomDocument;

    var content = documentAsIHtmlDocument3.documentElement.innerHTML;
}

The essential "guts" of extracting it from the HtmlDocument.DomDocument is in the webBrowser1_DocumentCompleted event handler.

Note: mshtml is obtained by adding a COM reference to 'Microsoft HTML Object Library` (aka: mshtml.dll)

Rob
A: 

It would be easier to use the HtmlDocument itself, rather than its DomDocument property:

string html = htmlDoc.Body.InnerHtml;

Or even simpler, if you have access to the WebBrowser containing the document:

string html = webBrowser.DocumentText;
Thomas Levesque
actually i needed DomDocument because DocumentText doesn't change after the DOM is manipulated.any way thanks for the answer
Yassir