这个示例演示如何载入一个 XML 文件,然后遍历该 XML 文件的所有节点,并用 Textbox 显示该 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) 框中键入 IterateNodes,再单击确定 (OK)。
在 Toolbox 里选中 Button 控件,将其拖到 Form1 上。在 Properties 窗口将该 Button 的 Name 属性改为 btnIterate,将其 Text 属性改为 Iterate Xml Nodes。
在 Toolbox 里选中 TextBox 控件,将其拖到 Form1 上。在 Properties 窗口将该 TextBox 的 Name 属性改为 txtContent,将其 Multiline 属性改为 True。
加入代码
双击 Iterate Xml Nodes 的 Button,进入代码编辑窗口。添加代码,使其如下:
Imports System.Xml
Public Class Form1
Private Sub btnIterate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnIterate.Click
Dim xmlDoc As New Xml.XmlDocument
xmlDoc.Load("C:/menu.xml")
IterateXmlNodes(xmlDoc.DocumentElement)
End Sub
Private Sub IterateXmlNodes(ByVal father As Xml.XmlNode)
Dim child As Xml.XmlNode
Me.txtContent.Text &= father.Attributes(0).Value & vbNewLine
For Each child In father.ChildNodes
IterateXmlNodes(child)
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) 表示该节点的第二个属性,Attributes(3) 表示该节点的第三个属性,依次类推。
用 For Each... Next 语句遍历所有 XML 节点。
该实例用了递归算法进行遍历,在 IterateXmlNodes 过程里调用了 IterateXmlNodes 。