Search code examples
vbavb6html-parsingmshtml

MSHTML: CreateDocumentFromString instead of CreateDocumentFromUrl


I'd like to use the MSHTML library to parse some HTML that I have in a string variable. However, I can't figure out how to do this. I can easily parse the contents of a webpage given a known URL, but not the source HTML directly. Is this possible? If so, how?

Public Sub ParseHTML(sHTML As String)
Dim oHTML As New HTMLDocument, oDoc As HTMLDocument

    'This works:'
    Set oDoc = oHTML.createDocumentFromUrl("http://www.google.com", "")

    'I would like to do the following but no such method actually exists:'
    Set oDoc = oHTML.createDocumentFromString(sHTML)

    ....
    'Parse the HTML using the oDoc variable'
    ....

Solution

  • You can;

    Dim odoc As Object
    
    Set odoc = CreateObject("htmlfile") '// late binding
    
    '// or:
    '// Set odoc = New HTMLDocument 
    '// for early binding
    
    odoc.open
    odoc.write "<p> In his house at R'lyeh, dead <b>Cthulhu</b> waits dreaming</p>"
    odoc.Close
    MsgBox odoc.body.outerHTML