深度优先遍历文挡树(递归方法):
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
转载请注明原文地址: https://win8.8miu.com/read-1484935.html