zoukankan      html  css  js  c++  java
  • 在.Net framework下遍历XML文挡树的两种算法

    在阅读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) ;

  • 相关阅读:
    bootstrap 兼容 IE8
    在IE8的基础上安装IE11
    前台
    dll 库文件下载地址
    年轻
    linux 异常
    Navicat断网时连不上数据库
    jQuery
    破解版 Teamver 安装
    mysql
  • 原文地址:https://www.cnblogs.com/kwklover/p/369888.html
Copyright © 2011-2022 走看看