再论在VB中显示XML数据 (高分相送)

bgxy 2002-01-26 12:05:39

我创建了以下格式的XML文件,现想将"date","division","formname","inputprogress","marking","allsheetcount"中的数据显示在VB里所对应的TextBox1~TextBox6,(不使用ADO),我编写了一个函数用来读取内容。第一次运行成功但第二次运行的时候提示 对象变量或WITH 块为定义,请高手给指点一二,高分相送

<?xml version="1.0" encoding="GB2312"?>
<Project>
<condition>
<date>2001-1-8</date>
<division>a</division>
<formname>b</formname>
<inputprogress>c</inputprogress>
<marking>d</marking>
<allsheetcount>5</allsheetcount>
</condition>
<result>
<item name="北京">1111</item>
<item name="东京">2222</item>
<item name="华盛顿">3333</item></result>
</Project>

'vb代码如下

Dim OBJxmldoc As DOMDocument

Form_load
......
OBJxmldoc.loadxml xxx .xml '省略写的
.....
end sub


'函数如下
Public Function M_Get_Conditiontext(ByVal Par_ConditionName As String) As String
Dim OBJxmlnode As IXMLDOMNode
Dim strtemp As String
strtemp = ""
strtemp = "//condition/" & Par_ConditionName
Set OBJxmlnode = OBJxmldoc.selectSingleNode(strtemp)

M_Get_Conditiontext = OBJxmlnode.Text
Set OBJxmlnode = Nothing

End Function


'读取数据显示在文本框中,我单步执行结果出现如下错误
Private Sub Command4_Click()
Text1.text = M_Get_Conditiontext("date") 'Text1成功读取
Text2.text = M_Get_Conditiontext("Division") '运行到这时OBJxmlnode 还为Nothing, 并且 OBJxmlnode.Text 提示对象变量或WITH 块为定义

Text3.text = M_Get_Conditiontext("formname")
Text4.text = M_Get_Conditiontext("inputprogress")
Text5.text = M_Get_Conditiontext("marking")
Text6.text = M_Get_Conditiontext("allsheetcount")
End Sub
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bgxy 2002-01-28
  • 打赏
  • 举报
回复
ltpao(啊炮)同志,果然是大小写问题,呵呵,
Text2.text = M_Get_Conditiontext("Division") 'division
我现在兑现我的承诺送分40
redfox33 2002-01-28
  • 打赏
  • 举报
回复
brian_zhuang(不长进的阿庄)老兄,你没有明白我的意思,我之所以把它做成方法是因为我把它封装在类中,对外界只提供一个M_Get_Conditiontext方法,只要输入每个要得到节点内容的节点名(date or division ...)就可以了。
brian_zhuang 2002-01-27
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/500/500522.shtm

回复人: ltpao(啊炮) (2002-1-27 10:55:50) 得0分
注意大小写?Division:division
回复人: brian_zhuang(不长进的阿庄) (2002-1-27 11:04:36) 得0分
用Dim OBJxmlnode As new IXMLDOMNode 试试.
不过我不是很认同你这样的写法,效率很低.

Dim arrDate As IXMLDOMNodeList
Dim arrDivision as IXMLDOMNodeList
.
.
.

Set arrDate = OBJxmlnode.getElementsByTagName("Date")
Set arrDivision = OBJxmlnode.getElementsByTagName("Division")

.
.

这样获得nodeList后对nodeList(0),nodeList(1),......进行操作会高效.
回复人: brian_zhuang(不长进的阿庄) (2002-1-27 11:06:53) 得0分
是呵,ltpao(啊炮)说得对.看来我还是马大哈了...
bgxy 2002-01-27
  • 打赏
  • 举报
回复
具体该怎样做呢?
redfox33 2002-01-27
  • 打赏
  • 举报
回复
原来诸位朋友(brian_zhuang(不长进的阿庄),ltpao(啊炮))在这里也有恢复我,真是万分感谢关注,我马上就试,如果成功,100分像送。bgxy是我老板的账号,所以送也是送他的分,哈哈
xuechaoge 2002-01-26
  • 打赏
  • 举报
回复
ms在windows 2000中提供了一个xml语法解析器,用这个来解析xml很方便,如果其他的系统可以去下载一个xml解析器,
bgxy 2002-01-26
  • 打赏
  • 举报
回复
请高手帮帮忙啊

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧