将 XML 数据与 TreeView 绑定的实例代码

这个示例演示将一个 XML 文件与 TreeView 控件绑定,并用 TreeView 控件显示 XML 文件每个 XmlNode 的第一个属性的值。主要的做法是遍历 XML 文件的每个节点,同时在 TreeView 里新建相应的节点,将每个 XML 节点第一个属性的值写入新建的 TreeView 的节点。

如果你还不知道如何遍历 XML 文件的每个 XmlNode,请先看 遍历 XML 文件所有节点的实例代码

准备一个 XML 文件

准备一个 XML 文件,内容如下,将其存为 C:\menu.xml。

<?xml version="1.0" encoding="UTF-8"?>
<menu name ="1">
 <menu name ="1.1"/>
 <menu name ="1.2">
  <menu name ="1.2.1"/>
  <menu name ="1.2.2"/>
  <menu name ="1.2.3">
   <menu name ="1.2.3.1"/>
   <menu name ="1.2.3.2"/>
   <menu name ="1.2.3.3"/>
  </menu>
  <menu name ="1.2.4"/>
 </menu>
 <menu name ="1.3">
  <menu name ="1.3.1"/>
  <menu name ="1.3.2"/>
 </menu>
 <menu name ="1.4"/>
 <menu name ="1.5"/>
</menu> 

创建项目 (Project) 和添加控件

打开 Visual Studio 2005。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序 (Windows Application)。在名称 (Name) 框中键入 XmlTreeView,再单击确定 (OK)。

在 Toolbox 里选中 Button 控件,将其拖到 Form1 上。在 Properties 窗口将该 Button 的 Name 属性改为 btnBind,将其 Text 属性改为 Bind XML To TreeView。

在 Toolbox 里选中 TreeView 控件,将其拖到 Form1 上。在 Properties 窗口将该 TreeView 的 Name 属性改为 treeMenu。

加入代码

双击 Bind XML To TreeView 的 Button,进入代码编辑窗口。添加代码,使其如下:

Imports System.Xml
 
Public Class Form1
 
    Private Sub btnBind_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnBind.Click
 
        Dim xmlDoc As New Xml.XmlDocument
        xmlDoc.Load("C:\menu.xml")
 
        treeMenu.BeginUpdate()
        treeMenu.Nodes.Clear()
        BindXmlToTreeView(xmlDoc.DocumentElement, treeMenu.Nodes)
        treeMenu.ExpandAll()
        treeMenu.EndUpdate()
 
    End Sub
 
    Private Sub BindXmlToTreeView(ByVal father As XmlNode, _
    ByVal treeNodes As TreeNodeCollection)
 
        'Add TreeNode
        Dim strText As String = father.Attributes(0).Value
        Dim treeNode As TreeNode = treeNodes.Add(strText)
 
        'Add TreeNodes recursively
        Dim child As Xml.XmlNode
        For Each child In father.ChildNodes
            BindXmlToTreeView(child, treeNode.Nodes)
        Next
 
    End Sub
 
End Class

选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。你会看到如下画面。

提示

用 XmlDocument.Load 这个方法,可以载入某个 XML 文件。

用 XmlDocument.DocumentElement 这个属性,可以得到 XML 文件的根节点。

用 XmlNode.ChildNodes 这个属性得到某个 XML 节点的所有子节点。每个子节点也是一个 XmlNode。

用 XmlNode.Attributes(integer).Value 这个属性,可以得到 XML 节点的某一个属性值。Attributes 括号里的值表示是该节点的第几个属性,Attributes(0) 表示该节点的第一个属性,Attributes(1) 表示该节点的第二个属性,依次类推。

用 TreeView.Nodes.Clear 方法可以删除 TreeView 的所有节点 (TreeNode)。

用 TreeView.ExpandAll 可以展开 TreeView 所有节点 (TreeNode)。

用TreeNodeCollection.Add(string) 方法可以在 TreeNodeCollection 最后添加一个 TreeNode。

该实例用了递归算法进行遍历,在 BindXmlToTreeView 过程里调用了 BindXmlToTreeView 。

BeginUpdate 方法禁止重画 TreeView。

EndUpdate 方法允许重画 TreeView。

 

作者:woyouxian[at]gmail[点]com

时间:2006-12-20 第一稿 2006-12-25 修改

www.admin5.com/html

站长网 站长学院网页教程与代码

www.admin5.net

免费收录站长网站

www.admin5.com

站长网信息中心

www.admin5.com/idc

站长网 idc频道