C#調(diào)用WalkTree()方法
本文向大家介紹C#調(diào)用WalkTree()方法,可能好多人還不知道C#調(diào)用WalkTree()方法,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
菜單應(yīng)用程序使用了3個 XML 文檔:menuItems.xml、menuItems2.xml 和menuItems3.xml,它們用于標(biāo)記單獨的菜單項目。XML的處理和操作由一個叫做xmlMenus.dll的集合完成,這個集合被服務(wù)器端的一個ASP.NET 文件createMenus.aspx所使用。在客戶端的動態(tài)HTML (DHTML)內(nèi)容使用了一個層疊格式表文件和一個JavaScript文件,這些文件聯(lián)合在一起生成了本文開始部分的圖示結(jié)果。
我們在List 1的代碼顯示了用來標(biāo)記單獨菜單項目的XML文檔的一部分。文檔中的主元素命名為menuItem,它可以包含一個名字和超級鏈接元素以及額外的menuItem 子元素。這種關(guān)系可以用來創(chuàng)建包含子菜單的菜單系統(tǒng),就象Windows的開始菜單一樣。
由于 XML已經(jīng)標(biāo)出了分層關(guān)系,因此就可以利用循環(huán)在不同元素之間行走:當(dāng)使用XmlDocument、XmlNode和XmlNodeList類創(chuàng)建子節(jié)點時,我們可以反復(fù)調(diào)用WalkTree() 函數(shù)以顛倒父/子關(guān)系。其它的類如 ArrayList和 StreamWriter用于將相關(guān)菜單歸類到數(shù)組中,然后在適當(dāng)時間將所生成的菜單結(jié)構(gòu)寫入一個文件中。
XmlMenus集合的代碼開始時要聲明一個XmlHierMenu 名稱空間,接下來要引用 System、 System.Xml、 System.Collections和System.IO 名稱空間:
- using System;
- using System.Xml;
- using System.Collections;
- using System.IO;
在這部分代碼之后要創(chuàng)建3個構(gòu)造器。一個構(gòu)造器不接收變量,只對變量進行初始化。下一個構(gòu)造器接收一個圖象文件的定制路徑。最后一個構(gòu)造器在不經(jīng)常對XML菜單進行刷新的情況下,允許將由集合生成的輸出存儲到一個文件中。最后一個構(gòu)造器所生成的文件可以被靜態(tài)地包含在一個 ASP.NET文件中,而不是在各個Web頁面請求時隨時地生成。
這個方法負責(zé)進行XML文檔的裝載和解析,找到根節(jié)點,然后在根的子節(jié)點之間循環(huán)。如果發(fā)現(xiàn)一個子節(jié)點本身還有子節(jié)點,就C#調(diào)用WalkTree()方法,并且把這些子節(jié)點都傳遞到其中。如果這些子節(jié)點還有子節(jié)點,就再次C#調(diào)用WalkTree()方法。這個過程循環(huán)進行直到不再發(fā)現(xiàn)增加的子節(jié)點。Walktree()方法的代碼可以參看List 3。
在C#調(diào)用WalkTree()方法并且對不同的節(jié)點進行分析的同時,要解析 menuItem節(jié)點,將來自其超級鏈接和名字節(jié)點的數(shù)據(jù)放在數(shù)組列表中。對整個 XML文檔都進行解析之后,數(shù)組列表的內(nèi)容就被傳遞回調(diào)用的ASP.NET的頁面,然后使用Response對象寫出信息。從這時起,客戶端的 JavaScript代碼就開始控制DHTML 菜單了。
在服務(wù)器端,我們使用一個 ASP.NET頁面來開始菜單的創(chuàng)建過程。這個頁面輸入了與集合相關(guān)聯(lián)的名稱空間XmlHierMenu:
- <%@ page language="C#" %>
- <%@ Import Namespace="XmlHierMenu" %>
然后,將樣式表文件和 JavaScript文件包含在文件的 代碼區(qū)中。最后,在 ASP.NET 頁面底部的代碼用來引用上面提到的CreateMenu() 方法與WalkTree()方法。
在ASP.NET 頁面中所找到的C# 代碼只是建立了到不同的XML文檔的路徑,并且對 XmlMenu 類進行了例示。一旦對這個類進行了例示,就對 CreateMenu()方法進行調(diào)用。這個方法接收菜單名以及到這個菜單的XML文檔的文件路徑。在本例中,要創(chuàng)建3個名為menu1、 menu2和 menu3 的菜單,然后在一個ASP.NET頁面中使用。這個應(yīng)用程序在一個給定頁面中可以支持無窮多的菜單,但是我們建議菜單數(shù)目不要過多,因為每增加一個菜單,發(fā)送到客戶端的文件規(guī)模都會增加。
【編輯推薦】