我用vb6,写一个测试读取xml文件的例子,建立一个通用的exe工程,在Form1中添加一个CommandButton控件,选择Project菜单的 References命令,选中Microsoft XML, version 2.0,然后在工程目录下面写了一个名为testXML.xml的文件,内容如下:
<hostName>10.40.50.1</hostName>
<hostPort>8899</hostPort>在Form1中的代码如下所示:
Option Explicit
Dim xml As DOMDocument
Private Sub cmdLoad_Click()   
  Set xml = New DOMDocument
  Call xml.Load(App.Path & "xmlTest.xml")  
  Dim root As IXMLDOMElement
  Set root = xml.documentElement  
  Dim node As IXMLDOMNode
  
  For Each node In root.childNodes
    Debug.Print node.Text
  Next  
End Sub但是运行的时候老是报错,具体内容为:实时错误'91':对象变量或With块变量未设置
请大家帮忙看看,如果解决100分相赠,谢谢!

解决方案 »

  1.   

    Private Sub LoadValues()
    Dim xml_document As DOMDocument
    Dim values_node As IXMLDOMNode' Load the document.
    Set xml_document = New DOMDocument
    xml_document.Load m_AppPath & "Values.xml"' If the file doesn't exist, then
    ' xml_document.documentElement is Nothing.
    If xml_document.documentElement Is Nothing Then
    ' The file doesn't exist. Do nothing.
    Exit Sub
    End If' Find the Values section.
    Set values_node = xml_document.selectSingleNode("Values")' Read the saved values.txtFirstName.Text = GetNodeValue(values_node, "FirstName", "???")
    txtLastName.Text = GetNodeValue(values_node, "LastName", "???")
    txtStreet.Text = GetNodeValue(values_node, "Street", "???")
    txtCity.Text = GetNodeValue(values_node, "City", "???")
    txtState.Text = GetNodeValue(values_node, "State", "???")
    txtZip.Text = GetNodeValue(values_node, "Zip", "???")
    End Sub
      

  2.   

    我做的一个treeview的
    Dim objXML As DOMDocument
    Dim nXML  As Node
    Dim childnode As Node
    Dim secondnode As NodePrivate Sub Command1_Click() 'xmlDom object
     'Set objXML = CreateObject("Microsoft.XMLDOM")
     Set objXML = New DOMDocument
     objXML.async = False
     'load the xml menu file
     objXML.Load ("mysites.xml")
     Set objLst = objXML.getElementsByTagName("site")
     'how many items
     intNoOfHeadlines = objLst.length
     'looping over the items -1 because it's starts from 0 Set nXML = TreeView1.Nodes.Add(, , "root", "站点信息")
     'Call LoadTree(nXML, children)
    For i = 0 To intNoOfHeadlines - 1
        Set objHdl = objLst.Item(i)
        key1 = "p" & i
        Set childnode = TreeView1.Nodes.Add(nXML, tvwChild, "", objHdl.childNodes(0).Text)
        Set secondnode = TreeView1.Nodes.Add(childnode, tvwChild, "", objHdl.childNodes(1).Text)
        'List2.AddItem objLst.Item(i).Attributes(i).Text
        'List3.AddItem objHdl.childNodes(2).Text
    NextEnd Submysites.xml<?xml version="1.0"?>
    <mysites>
    <site>
    <topic>news</topic>
    <name>CNN</name>
    <url>http://www.cnn.com</url>
    </site>
    <site>
    <topic>sport</topic>
    <name>Sydney 2000</name>
    <url>http://www.olympics.com</url>
    </site>
    <site>
                             <topic>Travel</topic>
                             <name>VirtualTourist</name>
                             <url>http://www.virtultourist.com</url>
                 </site>
                 <site>
                             <topic>computers</topic>
                             <name>Experts-exchange</name>
                             <url>http://www.experts-exchange.com</url>
                 </site>
                 <site>
                             <topic>computers</topic>
                             <name>Microsoft</name>
                             <url>http://www.microsoft.com</url>
                  </site>
                  <site>
                             <topic>sport</topic>
                             <name>Sportelo</name>
                             <url>http://www.sportelo.co.il</url>
                  </site>
                  <site>
                            <topic>computers</topic>
                            <name>myscript</name>
                            <url>http://www.myscript.co.il</url>
                  </site>
    </mysites>
      

  3.   

    Private Sub LoadXML()
    'Xml文件结构如下:
    '  <?xml version="1.0" encoding="gb2312" ?>
    '- <test>
    '  <type name="古典武侠">侠义天下</type>
    '- <book name="寻秦记" author="黄易" price="25">
    '  <chapter2 title="科学疯子" page="87">被拉过去当实验品</chapter2>
    '  <chapter3 title="阴错阳差" page="44">实验失败,来到了三年前秦国</chapter3>
    '  <chapter4 title="美蚕娘" page="26">在荒野山村遇到美蚕娘</chapter4>
    '  </book>
    '  </test>
        Dim xmlDom As New DOMDocument
        Dim xmlNode As IXMLDOMElement
        Dim i As Integer
        
        xmlDom.Load (App.Path + "\xml.xml")
        Set xmlNode = xmlDom.documentElement.childNodes(1)
        
        If xmlDom.documentElement Is Nothing Then
            Exit Sub
        End If
        
        ListView1.ListItems.Clear
        With ListView1.ColumnHeaders
            .Clear
            .Add , , "章节"
            .Add , , "题目"
            .Add , , "页数"
            .Add , , "内容简介"
            .Item(1).Width = 1000
            .Item(2).Width = 1000
            .Item(3).Width = 600
            .Item(4).Width = 1750
        End With
        
        
        For i = 0 To xmlNode.childNodes.length - 1
            With ListView1.ListItems.Add(, , xmlNode.childNodes(i).nodeName)
                .SubItems(1) = xmlNode.childNodes(i).Attributes(0).Text
                .SubItems(2) = xmlNode.childNodes(i).Attributes(1).Text
                .SubItems(3) = xmlNode.childNodes(i).Text
            End With
        NextEnd Sub
      

  4.   

    怎么一帮大虾看也不看问题就贴一堆代码呀?楼主的问题显然在于他的xml文件结构有问题:XML只允许一个根元素。可以把现有元素放到一个下面,例如:
    <host>
    <hostName>10.40.50.1</hostName>
    <hostPort>8899</hostPort>
    </host>由于这一问题,xml.load肯定不成功,导致xml.documentElement为空,就产生了那个错误信息。
      

  5.   

    谢谢了,问题已经解决,我之前犯了两个错误
    1。xml的格式有问题,正如 techgopher(几番/\\/终不平) 所说的
    2。Call xml.Load(App.Path & "xmlTest.xml") 这个语句也有问题,应该写成
    Call xml.Load(App.Path & "\xmlTest.xml") 
    谢谢大家,马上给分