在阅读ASP.NET_XML深入编程技术 (PDF格式)一书的时候,发现遍历树的两种算法:深度优先和广度优先遍历文挡树,前一种需要使用递归,后者则不需要,本人大学时期数据结构学的不好,每每涉及到树,总喜欢用递归,希望以后能根据需要选用一种,不过没有时间再系统地学习数据结构了,那就平时多学多记吧!
另外这个例子不错,还可以学到.net的XML DOM的一些操作方法.

 1/**//// <summary>
 2  /// 深度优先遍历文挡树(递归方法)
 3  /// </summary>
 4  /// <param name="currentNode">当前节点</param>
 5  public void DOMDepthFirst(XmlNode currentNode)
 6  {
 7   XmlNode node = currentNode.FirstChild ;
 8   while ( node != null )
 9   {
10    DOMDepthFirst( node ) ;
11    node = node.NextSibling ;
12   }
13
14   //do something else with currentNode herer
15  }
 1  /**//// <summary>
 2  /// 广度优先遍历文挡树(非递归)
 3  /// </summary>
 4  /// <param name="root">遍历的入口点,如果需要遍历整个文挡则是XmlDocument对象</param>
 5  public void DOMBreadthFirst(XmlNode root)
 6  {
 7   Queue queue = new Queue() ;
 8   queue.Enqueue(root) ;
 9   XmlNode currentNode = null ;
10   try
11   {
12    while (true)
13    {
14     //如果queue为空,则抛错,跳出try section,这里是while循环的退出条件
15     currentNode = (XmlNode)queue.Dequeue() ;
16
17     if (currentNode.HasChildNodes)
18     {
19      foreach (XmlNode child in currentNode.ChildNodes)
20      {
21       queue.Enqueue(child) ;
22      }
23     }
24    }
25   }
26   catch(System.InvalidOperationException ex)
27   {
28    //throw ex ;
29   }
30  }
31
32

使用方法:
   XmlDocument doc = new XmlDocument() ;
   doc.Load("test.xml") ;
   DOMDepthFirst(doc) ;
   DOMBreadthFirst(doc) ;

转载于:https://www.cnblogs.com/kwklover/archive/2006/04/08/369888.html

在.Net framework下遍历XML文挡树的两种算法相关推荐

  1. 遍历XML文挡树的两种算法

    深度优先遍历文挡树(递归方法):  1/** <summary>  2  /// 深度优先遍历文挡树(递归方法)  3  /// </summary>  4  /// < ...

  2. 用JavaScript语言通过DOM遍历XML文档

    实验结果要求如下: 解决步骤: 1.  首先是布局,左边用表格比较方便,右边是个div块. 2.  嵌入JavaScript脚本,由易到难,写定义全部显示的功能函数.显示姓名功能函数,显示属性功能函数 ...

  3. php循环获取xml节点,PHP_PHP遍历XML文档所有节点的方法,本文实例讲述了PHP遍历XML文档 - phpStudy...

    PHP遍历XML文档所有节点的方法 本文实例讲述了PHP遍历XML文档所有节点的方法.分享给大家供大家参考.具体实现方法如下: 1. contact.xml代码: J J J Manager Nati ...

  4. XML文档定义有几种形式?解析XML文档有哪几种方式?

    XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上 ...

  5. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

    XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? XML文档定义分为DTD和Schema两种形式,二者都是对XML语法的约束.其本质区别在于Schema本身也是一个XML文 ...

  6. bootstrap搜索框:click下拉展开改hover展开(两种代码)

    bootstrap搜索框:click下拉展开改hover展开(两种代码) 问题: 实现顶部导航的鼠标悬停下拉展开的效果: 实现的滚不导航区域:搜索框组件之点击下拉展开 变更为 鼠标悬停展开下拉选项条件 ...

  7. PDF文档压缩的两种简单方法

    我们无论在办公中还是在上网查找资料时,经常会遇到PDF文档.工作中,传送邮件时需要PDF文档格式的,但是PDF文档太大也是个棘手的问题.大多数公司邮箱上传附件大小是限制在5M以下的,否则就会出现接收失 ...

  8. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) 阅读本文前,请确保你已经掌握了递归.栈和队列的基本知识,如想掌握搜索的代码实现,请确保你能够用代码实现栈和队列的基本操作. 深度优先遍 ...

  9. 计算机音乐播放器设置,Win7系统下设置默认音乐播放器的两种方法

    可能很多新手用户不知道Win7系统下怎么设置默认音乐播放器?我们习惯将某一程序设置为默认打开方式,音乐播放器也可以这样子的.一些用户想把酷狗播放器.或者qq音乐设置为默认音乐播放器,只要打开音乐文件, ...

最新文章

  1. linux搭建--ubuntu下安装libvirt注意事项(二)
  2. Java实现HashTable的基本操作
  3. 攻防世界-web-fakebook-从0到1的解题历程writeup
  4. android 自定义 进度条 旋转,Android_Android ProgressBar进度条使用详解,ProgressBar进度条,分为旋转进 - phpStudy...
  5. Qt中标准对话框实例,QObject::tr()的作用
  6. 点击打开自己博客地址通过默认浏览器
  7. kubeadm安装k8s 1.13版本
  8. 【剑指offer】面试题24:反转链表(Java 实现)
  9. 竟然被awk生成的随机数给整蒙了,也谈随机数生成种子
  10. 使用swoole作为MQTT客户端并接收实现即时消息推送
  11. Java StringBuffer 用法
  12. SPSS心理学量表总体或分维度用总分还是均分表示?【SPSS 061期】
  13. js获取当前URL、域名、端口号等
  14. python创建一个列表、依次存放每个月对应的天数_python计算天数
  15. 什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?
  16. 看透SpringMVC源码-网站架构演变1-3
  17. 拼多多 标题 html,拼多多的创意图和创意标题怎么测试?为什么要测试?怎样测试呢?...
  18. Pytorch中torch.isfinite()、torch.isinf()、torch.isnan()函数的使用
  19. 纵观 Excel 演化史,开发者如何通过“表格技术”提升企业生产力
  20. 小米笔记本装linux教程视频教程,重新安装系统,小编教你小米笔记本怎么重装win10系统...

热门文章

  1. c++ vlc读取摄像头_Qt音视频开发1-vlc解码播放
  2. Premiere Pro CC2017教程(三)
  3. 实时可视化 Debug:VS Code 开源新工具,一键解析代码结构
  4. 那些 别人家的孩子 ,后来都怎么样了 ?
  5. Github 热榜项目:如何让你的终端酷炫到没朋友
  6. 通讯编码器测试软件,西门子S7-200 SMART通过modbusRTU与绝对值编码器通信
  7. C语言僵尸进程,C/C++网络编程8——多进程服务器端之销毁僵尸进程
  8. php网页论坛制作教程,PHP开发 小型论坛教程之登录HTML页面
  9. win10浏览器加载很慢_谷歌彻底爆发了!Chrome浏览器正式更新,8GB老电脑满血复活...
  10. 分支限界发:Dijkstra算法