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'
....
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
For straight HTML code such as Access-Rich-Text this does it:
Dim HTMLDoc As New HTMLDocument
HTMLDoc.Body.innerHTML = strHTMLText
This is a much better example. You will not get a null exception, nor late binding.
(And if you use WPF, just add System.Windows.Forms
in your reference.)
Dim a As Object
a = New mshtml.HTMLDocument
a.open()
a.writeln(code)
a.close()
Do Until a.readyState = "complete"
System.Windows.Forms.Application.DoEvents()
Loop
Dim doc As mshtml.HTMLDocument = a
Dim b As mshtml.HTMLSelectElement = doc.getElementsByTagName("Select").item("lang", 0)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With