如题

解决方案 »

  1.   

    点击菜单Project--References--选中Microsoft XML,V3.0 Microsoft XML,Version 2.0程序中:
        Dim DomXML        As New MSXML2.DOMDocument
        Dim DomNode       As IXMLDOMNode    Dim PicVideoChild As IXMLDOMElement '定义各子节点
        Dim PictureChilds As IXMLDOMElement
        Dim PictureChild  As IXMLDOMElement   blnGetXML = DomXML.loadXML(XMLString)'加载XML流或用LoadXMLFile加载文件
       '取得根结点
        Set DomNode = DomXML.selectSingleNode("PictureVideo")
        '分层解析
        For Each PicVideoChild In DomNode.childNodes
            For Each PictureChilds In PicVideoChild.childNodes
                ……
                For Each PictureChild In PictureChilds.childNodes
                    If PictureChild.nodeName = "Name" Then
                        ……              
                Next
            Next
        Next
      

  2.   

    如果不使用DOM也可以使用ADo
    定义一个记录集就可以
    保存时用
    .Save ,adPersistXML 
    比如:
        Set mrecSchedule = New ADODB.Recordset        mrecSchedule.Fields.Append "Remote Server", adVarChar, 128
            mrecSchedule.Fields.Append "Remote UID", adVarChar, 128
            mrecSchedule.Fields.Append "Remote PWD", adVarChar, 128
            mrecSchedule.Open
            mrecSchedule.Save mstrFile, adPersistXML'    With mrecSchedule
    '        .AddNew
    '        .Fields("Remote Server") = CStr(sService)
    '        .Fields("Remote UID") = CStr(sUser)
    '        .Fields("Remote PWD") = CStr(sPass)
    ''        .Update
    '        .Save , adPersistXML
    '    End With2,使用DOM
    Sub LoadXMLFiles(strXMLFilePath As String, strXMLFileName As String)
    On Error GoTo ErrorHandler   ' Enable error-handling routine.
        objXMLDOM.async = False
        objXMLDOM.Load (strXMLFilePath & "\" & strXMLFileName)
        Exit Sub           ' Exit to avoid handler.
    ErrorHandler:            ' Error-handling routine.
        Set objXMLDOM = Nothing
        End
    End Sub
    Sub ReadFile()
    On Error GoTo ErrorHandler   ' Enable error-handling routine.
    Dim NodeValue
        Set objNodes = objXMLDOM.selectNodes("MainNode")
       For Each objBookNode In objNodes
        If objBookNode.selectNodes("Node1").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("Node1").nodeTypedValue
             Debug.Print NodeValue
        End If
        If objBookNode.selectNodes("Node2").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("Node2").nodeTypedValue
             Debug.Print NodeValue
        End If
        Next objBookNode
        Set objNodes = objXMLDOM.selectNodes("MainNode/Node3/SubNode31")
        For Each objBookNode In objNodes
          If objBookNode.selectNodes("SubNode311").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("SubNode311").nodeTypedValue
             Debug.Print NodeValue
          End If
          If objBookNode.selectNodes("SubNode312").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("SubNode312").nodeTypedValue
             Debug.Print NodeValue
          End If
        Next objBookNode
        Set objNodes = objXMLDOM.selectNodes("MainNode/Node4/Node41")
        For Each objBookNode In objNodes
          If objBookNode.selectNodes("Node411").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("Node411").nodeTypedValue
             Debug.Print NodeValue
          End If
          If objBookNode.selectNodes("Node412").length <> 0 Then
             NodeValue = objBookNode.selectSingleNode("Node412").nodeTypedValue
             Debug.Print NodeValue
          End If
        Next objBookNode
        Exit Sub      ' Exit to avoid handler.
    ErrorHandler:       ' Error-handling routine.
       End
    End Sub