| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1536 人关注过本帖
标题:[讨论]VB读取xml元素遇到了问题
只看楼主 加入收藏
cwjmx
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-2-23
收藏
 问题点数:0 回复次数:6 
[讨论]VB读取xml元素遇到了问题
小虾,最近在做个题目为,从VB中读取xml文件中的元素,已经做的差不多了,但遇到个问题,例如:
<cj>
<ab>
<k1>2378</k1>
<k1>7845</k1>
<k1>8989</k1>
</ab>
</cj>
只能读取第一个k1标记里的数据,无法读取下面的请,帮我修改下,大侠,小虾感激不禁!
我的vb程序如下:
Option Explicit
Private p_AppPath As String
Private Sub Form_Load()
' 获得程序运行目录
p_AppPath = App.Path
If Right$(p_AppPath, 1) <> "\" Then p_AppPath = p_AppPath & "\"
' 加载值
LoadValues
End Sub

Private Sub Form_Unload(Cancel As Integer)
' 保存现有的值
SaveValues
End Sub

Private Sub LoadValues()

Dim xml_document As DOMDocument

Dim values_node As IXMLDOMNode

' 载入文件

Set xml_document = New DOMDocument
xml_document.Load p_AppPath & "Online00.xml"
If xml_document.documentElement Is Nothing Then

Exit Sub

End If

'寻找节点
Set values_node = xml_document.selectSingleNode("ab")
' 读取各个节点的值
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
End Sub

' 返回各个节点的值

Private Function GetNodeValue(ByVal start_at_node As IXMLDOMNode, ByVal node_name As String, _
Optional ByVal default_value As String = "") As String

Dim value_node As IXMLDOMNode
Set value_node = start_at_node.selectSingleNode(".//" & node_name)
If value_node Is Nothing Then
GetNodeValue = default_value
Else
GetNodeValue = value_node.Text
End If

End Function

' 保存现有的值

Private Sub SaveValues()
Dim xml_document As DOMDocument
Dim values_node As IXMLDOMNode
' 建立XML文件
Set xml_document = New DOMDocument
Set values_node = xml_document.createElement("ab")
xml_document.appendChild values_node
CreateNode values_node, "k1", txtName.Text
CreateNode values_node, "k1", txtSex.Text
' 保存XML文件
xml_document.save p_AppPath & "Online00.xml"

End Sub

Private Sub CreateNode(ByVal parent As IXMLDOMNode, _
ByVal node_name As String, ByVal node_value As String)
Dim new_node As IXMLDOMNode
Set new_node = parent.ownerDocument.createElement(node_name)
new_node.Text = node_value
parent.appendChild new_node
End Sub

搜索更多相关主题的帖子: xml 元素 
2006-03-07 11:44
kfp_kaka
Rank: 4
等 级:贵宾
威 望:13
帖 子:353
专家分:0
注 册:2006-1-12
收藏
得分:0 

有两个地方有点问题,我也是刚学的,不知道说得对不对。

'寻找节点
Set values_node = xml_document.selectSingleNode("ab")
' 读取各个节点的值
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
寻找节点应该是先找根节点,这句改成
Set values_node = xml_document.selectSingleNode("cj")

还有就是保存xml文件的时候

' 建立XML文件
Set xml_document = New DOMDocument
Set values_node = xml_document.createElement("ab")
xml_document.appendChild values_node
CreateNode values_node, "k1", txtName.Text
CreateNode values_node, "k1", txtSex.Text
' 保存XML文件
xml_document.save p_AppPath & "Online00.xml"
红色那句也改成
Set values_node = xml_document.createElement("cj")
记住,对xml的操作都是从根节点开始的


爱一个人不一定要拥有她 拥有一个人就一定要好好的爱她
2006-03-07 15:33
cwjmx
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-2-23
收藏
得分:0 
改好了,可还是读不出第2,第3个k
2006-03-08 10:01
kfp_kaka
Rank: 4
等 级:贵宾
威 望:13
帖 子:353
专家分:0
注 册:2006-1-12
收藏
得分:0 
你这段代码是网上拿来的吧?
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
txtName.Text = GetNodeValue(values_node, "k1", "???")
这里有点怪怪的,我发个xml的例子上来吧,你看看

爱一个人不一定要拥有她 拥有一个人就一定要好好的爱她
2006-03-08 11:53
cwjmx
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-2-23
收藏
得分:0 
发给我看看,谢谢了
2006-03-09 09:56
kfp_kaka
Rank: 4
等 级:贵宾
威 望:13
帖 子:353
专家分:0
注 册:2006-1-12
收藏
得分:0 

我发了


爱一个人不一定要拥有她 拥有一个人就一定要好好的爱她
2006-03-09 11:28
liujuncai
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-18
收藏
得分:0 

我要好好学!!

2006-05-30 19:06
快速回复:[讨论]VB读取xml元素遇到了问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011931 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved