在.Net 下遍历XML文挡树的两种算法

it2022-05-09  30

深度优先遍历文挡树(递归方法):  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   }1314   //do something else with currentNode herer15  } 广度优先遍历文挡树(非递归) 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   try11   {12    while (true)13    {14     //如果queue为空,则抛错,跳出try section,这里是while循环的退出条件15     currentNode = (XmlNode)queue.Dequeue() ;1617     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 使用方法:    XmlDocument doc = new XmlDocument() ;   doc.Load("test.xml") ;   DOMDepthFirst(doc) ;   DOMBreadthFirst(doc) ;

转载于:https://www.cnblogs.com/tuyile006/archive/2006/05/12/398474.html


最新回复(0)