这个示例演示将一个 XML 文件与 TreeView 控件绑定,并用 TreeView 控件显示 XML 文件每个 XmlNode 的第一个属性的值。主要的做法是遍历 XML 文件的每个节点,同时在 TreeView 里新建相应的节点,将每个 XML 节点第一个属性的值写入新建的 TreeView 的节点。
如果你还不知道如何遍历 XML 文件的每个 XmlNode,请先看 遍历 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>
打开 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 修改
站长网 站长学院网页教程与代码
免费收录站长网站
站长网信息中心
站长网 idc频道