我用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分相赠,谢谢!
<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分相赠,谢谢!
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
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>
'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
<host>
<hostName>10.40.50.1</hostName>
<hostPort>8899</hostPort>
</host>由于这一问题,xml.load肯定不成功,导致xml.documentElement为空,就产生了那个错误信息。
1。xml的格式有问题,正如 techgopher(几番/\\/终不平) 所说的
2。Call xml.Load(App.Path & "xmlTest.xml") 这个语句也有问题,应该写成
Call xml.Load(App.Path & "\xmlTest.xml")
谢谢大家,马上给分