VBA解析IE文档中的HTML页面中包含的XML

时间:2015-08-20 03:31:53

标签: xml vba internet-explorer

我有一个VBA程序,它使用IE Automation以经典的方式查询网站:     Const URL =" xxxx"     Dim ieApp作为InternetExplorer     Dim oHTMLDoc作为HTMLDocument

ieApp.Navigate URL
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

Set oHTMLDoc = ieApp.Document
.....etc

由于某些原因,我必须使用InternetExplorer对象 - 我无法使用MSXML2库来查询网站。在程序的后面,查询的结果是纯XML - 使用HTML例程解析很麻烦。

所以我的简单问题是:如何将HTMLDocument传输到MSXML2.DOMDocument?

Dim oXMLDoc As MSXML2.DOMDocument
Set oXMLDoc = oHTMLDoc  'Fails

谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个

'add reference Microsoft XML, v6.0
Public Sub DownloadFile()
    Dim objWHTTP As Object
    Dim strPath As String
    Dim arrData() As Byte
    Dim lngFreeFile As Long



    On Error Resume Next
        Set objWHTTP = CreateObject("WinHTTP.WinHTTPrequest.5")
        If Err.Number <> 0 Then
            Set objWHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
        End If
    On Error GoTo 0

    URL = "Enter URL Here"

    objWHTTP.Open "GET", URL, False
    objWHTTP.send
    arrData = objWHTTP.responseBody
    strData = StrConv(arrData, vbUnicode)

    Dim fedbook As New MSXML2.DOMDocument60

    fedbook.LoadXML strData
​

答案 1 :(得分:0)

感谢jdweng我有答案:

Dim ieApp As InternetExplorer
Dim oHTMLDoc As HTMLDocument
Dim sXML as String 

ieApp.Navigate *URL*
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

Set oHTMLDoc = ieApp.Document
Set oXML = New MSXML2.DOMDocument60

sXML = oHTMLDoc.DocumentElement.outerHTML
If Not oXML.LoadXML(sXML) Then _
    Err.Raise oXML.parseError.ErrorCode, , oXML.parseError.reason

我可以在我的oXML文档中享受XML!再次感谢。