用XML做数据源跟其他的数据库是一样的,给你个具体的例子: '开始把树加载进来 Public Function BinderTreeview(ByVal Tree As TreeView) Dim userXmlDocument As New XmlDocument Dim DocumentElement As XmlElement Dim xmlPath As String = ConfigurationSettings.AppSettings("menxml") Dim _XmlTreePath As String = ConfigurationSettings.AppSettings("SystemPath") + xmlPath userXmlDocument.Load(_XmlTreePath) DocumentElement = userXmlDocument.DocumentElement If DocumentElement Is Nothing Then '如果根节点为空,就是XML文件是空的,没有数据,退出循环 Exit Function End If If DocumentElement.HasChildNodes Then '判断是否有子节点,如果有的话,继续循环 Dim theTreeNode As New TreeNode theTreeNode.Text = DocumentElement.FirstChild.Attributes("Text").Value '加载第一个节点下的子节点,给Text付值 'If Not DocumentElement.FirstChild.Attributes("imageurl") Is Nothing Then ' If DocumentElement.FirstChild.Attributes("imageurl").Value <> "" Then ' theTreeNode.ImageUrl = DocumentElement.FirstChild.Attributes("imageurl").Value ' End If 'End If theTreeNode.Expanded = True Tree.Nodes.Add(theTreeNode) For Each node As XmlNode In DocumentElement.FirstChild.ChildNodes '用方法AddTreeNode开始循环子节点 AddTreeNodemain(theTreeNode, node) Next End If End Function '如果有子节点,一直循环下去 Private Function AddTreeNodemain(ByVal perTreeNode As TreeNode, ByVal perXmlNode As XmlNode) '************************************ ' AddTreeNode(perTreeNode, perXmlNode) Dim pTreeNode As New TreeNode '先定义一个树的新节点 pTreeNode.Text = perXmlNode.Attributes("Text").Value '给Text付值 'If Not perXmlNode.Attributes("imageurl") Is Nothing Then ' pTreeNode.ImageUrl = perXmlNode.Attributes("imageurl").Value 'End If If Not perXmlNode.Attributes("navigateurl") Is Nothing Then '给NavigateUrl付值,并加载进去 pTreeNode.NavigateUrl = perXmlNode.Attributes("navigateurl").Value End If pTreeNode.Target = perXmlNode.Attributes("Target").Value perTreeNode.Nodes.Add(pTreeNode) If perXmlNode.HasChildNodes Then '如果还有子节点的话,继续循环下去,直到最后一个节点 For Each node As XmlNode In perXmlNode.ChildNodes AddTreeNodemain(pTreeNode, node) Next End If End Function
可能还有别的方法
这句不是很不明白,怎么绑定到treeview上去?
<treenodes>
<treenode text="第一个节点"/>
<treenode text="第二个节点"/>
</treenodes>
一定要<treenodes>
Public Function BinderTreeview(ByVal Tree As TreeView)
Dim userXmlDocument As New XmlDocument
Dim DocumentElement As XmlElement
Dim xmlPath As String = ConfigurationSettings.AppSettings("menxml")
Dim _XmlTreePath As String = ConfigurationSettings.AppSettings("SystemPath") + xmlPath
userXmlDocument.Load(_XmlTreePath)
DocumentElement = userXmlDocument.DocumentElement If DocumentElement Is Nothing Then '如果根节点为空,就是XML文件是空的,没有数据,退出循环
Exit Function
End If
If DocumentElement.HasChildNodes Then '判断是否有子节点,如果有的话,继续循环
Dim theTreeNode As New TreeNode
theTreeNode.Text = DocumentElement.FirstChild.Attributes("Text").Value '加载第一个节点下的子节点,给Text付值 'If Not DocumentElement.FirstChild.Attributes("imageurl") Is Nothing Then
' If DocumentElement.FirstChild.Attributes("imageurl").Value <> "" Then
' theTreeNode.ImageUrl = DocumentElement.FirstChild.Attributes("imageurl").Value
' End If
'End If theTreeNode.Expanded = True
Tree.Nodes.Add(theTreeNode)
For Each node As XmlNode In DocumentElement.FirstChild.ChildNodes '用方法AddTreeNode开始循环子节点
AddTreeNodemain(theTreeNode, node)
Next
End If
End Function
'如果有子节点,一直循环下去
Private Function AddTreeNodemain(ByVal perTreeNode As TreeNode, ByVal perXmlNode As XmlNode)
'************************************
' AddTreeNode(perTreeNode, perXmlNode)
Dim pTreeNode As New TreeNode '先定义一个树的新节点
pTreeNode.Text = perXmlNode.Attributes("Text").Value '给Text付值 'If Not perXmlNode.Attributes("imageurl") Is Nothing Then
' pTreeNode.ImageUrl = perXmlNode.Attributes("imageurl").Value
'End If If Not perXmlNode.Attributes("navigateurl") Is Nothing Then '给NavigateUrl付值,并加载进去
pTreeNode.NavigateUrl = perXmlNode.Attributes("navigateurl").Value
End If pTreeNode.Target = perXmlNode.Attributes("Target").Value
perTreeNode.Nodes.Add(pTreeNode) If perXmlNode.HasChildNodes Then '如果还有子节点的话,继续循环下去,直到最后一个节点
For Each node As XmlNode In perXmlNode.ChildNodes
AddTreeNodemain(pTreeNode, node)
Next
End If
End Function