本文向大家介绍C#调用WalkTree()方法,可能好多人还不知道C#调用WalkTree()方法,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
菜单应用程序使用了3个 XML 文档:menuItems.xml、menuItems2.xml 和menuItems3.xml,它们用于标记单独的菜单项目。XML的处理和操作由一个叫做xmlMenus.dll的集合完成,这个集合被服务器端的一个ASP.NET 文件createMenus.aspx所使用。在客户端的动态HTML (DHTML)内容使用了一个层叠格式表文件和一个JavaScript文件,这些文件联合在一起生成了本文开始部分的图示结果。
我们在List 1的代码显示了用来标记单独菜单项目的XML文档的一部分。文档中的主元素命名为menuItem,它可以包含一个名字和超级链接元素以及额外的menuItem 子元素。这种关系可以用来创建包含子菜单的菜单系统,就象Windows的开始菜单一样。
由于 XML已经标出了分层关系,因此就可以利用循环在不同元素之间行走:当使用XmlDocument、XmlNode和XmlNodeList类创建子节点时,我们可以反复调用WalkTree() 函数以颠倒父/子关系。其它的类如 ArrayList和 StreamWriter用于将相关菜单归类到数组中,然后在适当时间将所生成的菜单结构写入一个文件中。
XmlMenus集合的代码开始时要声明一个XmlHierMenu 名称空间,接下来要引用 System、 System.Xml、 System.Collections和System.IO 名称空间:
- using System;
- using System.Xml;
- using System.Collections;
- using System.IO;
在这部分代码之后要创建3个构造器。一个构造器不接收变量,只对变量进行初始化。下一个构造器接收一个图象文件的定制路径。最后一个构造器在不经常对XML菜单进行刷新的情况下,允许将由集合生成的输出存储到一个文件中。最后一个构造器所生成的文件可以被静态地包含在一个 ASP.NET文件中,而不是在各个Web页面请求时随时地生成。
这个方法负责进行XML文档的装载和解析,找到根节点,然后在根的子节点之间循环。如果发现一个子节点本身还有子节点,就C#调用WalkTree()方法,并且把这些子节点都传递到其中。如果这些子节点还有子节点,就再次C#调用WalkTree()方法。这个过程循环进行直到不再发现增加的子节点。Walktree()方法的代码可以参看List 3。
在C#调用WalkTree()方法并且对不同的节点进行分析的同时,要解析 menuItem节点,将来自其超级链接和名字节点的数据放在数组列表中。对整个 XML文档都进行解析之后,数组列表的内容就被传递回调用的ASP.NET的页面,然后使用Response对象写出信息。从这时起,客户端的 JavaScript代码就开始控制DHTML 菜单了。
在服务器端,我们使用一个 ASP.NET页面来开始菜单的创建过程。这个页面输入了与集合相关联的名称空间XmlHierMenu:
- <%@ page language="C#" %>
- <%@ Import Namespace="XmlHierMenu" %>
然后,将样式表文件和 JavaScript文件包含在文件的 代码区中。最后,在 ASP.NET 页面底部的代码用来引用上面提到的CreateMenu() 方法与WalkTree()方法。
在ASP.NET 页面中所找到的C# 代码只是建立了到不同的XML文档的路径,并且对 XmlMenu 类进行了例示。一旦对这个类进行了例示,就对 CreateMenu()方法进行调用。这个方法接收菜单名以及到这个菜单的XML文档的文件路径。在本例中,要创建3个名为menu1、 menu2和 menu3 的菜单,然后在一个ASP.NET页面中使用。这个应用程序在一个给定页面中可以支持无穷多的菜单,但是我们建议菜单数目不要过多,因为每增加一个菜单,发送到客户端的文件规模都会增加。
【编辑推荐】