遍历 XML 文件所有节点的实例代码(递归调用)

这个示例演示如何载入一个 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 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值