当前位置:首页 > 教师职称论文 > 教育管理论文
教育管理论文

目录树的XML描述文档的自动生成教程

时间:2017/9/7 9:17:46   作者:小刁   来源:www.jiaoyulw.com   阅读:368   评论:0
内容摘要:1 背景  目录树从根到各级子目录项是一种有级别差隶属关系的分支层次结构[1],有关文件管理和调用的许多应用都触及目录树的查找和遍历。在实践的应用程序开发过程中,经常会遇到怎么查找某一文件以判断此文件的路径问题,也会将通过目录树查找资源,如:图片、文本等。  微软提供了应用Tre...
1 背景

  目录树从根到各级子目录项是一种有级别差隶属关系的分支层次结构[1],有关文件管理和调用的许多应用都触及目录树的查找和遍历。在实践的应用程序开发过程中,经常会遇到怎么查找某一文件以判断此文件的路径问题,也会将通过目录树查找资源,如:图片、文本等。

  微软提供了应用TreeView控件把数据按照树形结构安排并显现出来,很直观的描述复杂的层次关系[2]。可是应用此控件描述出来的层次关系很难将其保存出来,每次都要运转程序顺次获取信息信息。为了提高程序的运转效率,需要将将目录树的信息存储起来,方便在程序中一定要去获取和应用这些信息。有人试着应用数据库存储此部分信息[3],可是据库存储不可以跨平台并且用户在应用的时候需要装置巨大的数据库软件和做一些比较繁琐的装备,为大多数对数据库不熟的用户带了不方便。

  Xml是可扩展符号言语[4],可以用它来描述事物的信息,且可以实现的描述为树形结构。Xml文档是跨平台,并且应用不需要用户装置任何的软件和装备任何的参数,通过XmlDocument类可以直接对内部信息进行操作。本文提出了一种目录树的XML文档的自动生成方法。将可以自动将文件目录树中的相关数据转换成XML 数据文档,转化出来的XML文档可以具体对文件信息进行描述方便在不同平台下对数据进行处理。避免了手艺修正生成XML 数据文档不能适应快速很多的数据交流要求。

  2 文件目录树

  Windows通过目录树的方式对文件和文件夹进行管理,如图1所示。

  结构明晰,便于了解和读取。选用树形目录结构有如下长处:1)处理了重名问题,答应不同的用户用相同的名字去命名文件;2)有利于文件的分类,可以把不同类型的文件登录在不同的子目录下,便于查找和管理;3)能提高查找文件的速度,可以从当时目录开始设置路径(称相对路径),然后缩短查找路径,提高查找速度;4)可防止用户共享文件时损坏文件,对各级目录或文件规定存取权限,凡能得到某级目录权限的用户就可得到该级目录以及所属的子目录和文件,按规定的存取权限去应用目录和文件,达到维护文件的目的。

  XML是一种可扩展符号言语 (Extensible Markup Language,),用于符号电子文件使其具有结构性的符号言语,可以用来符号数据、界说数据类型,是一种答应用户对自己的符号言语进行界说的源言语。XML 提供一致的方法来描述和交流独立于应用程序或供货商的结构化数据。并且在各种环境下都可以提供了对XML操作的接口或类,如C#中提供XMLDocument操作xml文档,C++中提供了---操作XML文档,Java提供------操作XML文档等。

  3 根据C#的目录树的Xml描述文档的自动生成

  3.1 文档的生成原理

  对要生成xml文档的目录进行设定,设定实现后此目录将是XML文档的根节点。接着顺次找当时目录下的每一个实体(文件或是子目录),生成上一级目录节点对应的子节点;如果当时目录中包括子目录,则递归调用节点生成函数将其设定为上一级目录节点对应的子节点,辅导目录将不包括子目录了停止。这样多个子节点生成函数,重复进行递归调用,就可以实现对整个目录树的XML序列化。

  3.2 具体实现

  1)设置装备文件

  Config文件可以将命令行选项和装备文件选项一致到一种数据结构中。通过应用Config文件,可以在外部设置项目中所用参数,而无须修正代码去设置相关的数据,实现了装备选项和代码分别。在本项目中,设置如图2所示的Config文件,在此文件中实现了对要序列化的目录树、所生成的xml文件名、所保存的路径等相关信息进行了设置。

  2)界说xml节点信息

  为了可以将目录和子目录的具体标示在xml文件中,定了xml节点的描述信息,通过类XmlNode来显现,具体代码如图3所示。

  3)xml文件的自动生成

  根据所输入要生成的序列化的目录,写一个递归遍历方法实现序列化过程,并将序列化的成果写入到xml文件中,算法的具体实现过程描述如下:

  输入:要序列化的目录

  输出:根据目录生成的xml文件

  Step1:初始化相关信息(xml文件的保存路径、名字;要被序列化的目录的名字、路径等);

  Step2:判断xml文件保存的路径是否存在,如果存在则进行step3,不然跳转step4;

  Step3:则将原有的删除,从头按照初始化信息生成保存路径;

  Step4:按照初始化信息直接生成保存路径;

  Step5:判断要保存的xml文件路径和要序列化的目录树是否为空,如果为空则抛出反常,不然持续step6;

  Step6:设置文件流和xml文本写入目标;

  Step7:设计一个递归遍历方法实现xml信息写入;

  Step7.1:选择的序列化目录路径;

  Step7.2:判断要序列化目录路径是否存在,如果存在则生成一个目录目标,不然结束算法;

  Step7.3:获取目录目标的相关信息,如:包括的子目录个数和文件个数;

  Step7.4:生成xml文件的节点,此节点描述出目录目标的相关信息,如:目录名字和子目录数量等;

  Step7.5:判断子目录是否存在,如果存在则遍历一切的子目录,对每个子目录递归Step 7.3直到当时目录中不存在子目录停止;该目录是否有子文件,有则进行Step7.6,无则进行Step8;

  Step7.6:计算子文件地点目录的名字和子文件的个数,根据目录名字生成xml的一个节点名,为这个节点增加其子节点个数的特点。遍历这个目录的子文件调集,得到子文件的全路径,生成一个与子文件的名字相同的节点,将该文件的路径作为一个值写进去。然后判断这个目录目标是否有子目录,有则进行Step7.3,无则进行Step8;

  Step8:封闭xml文件写入和文件流。

  4 应用实例

  根据上面的设计方案,开发了一款界面如图4所示的系统。

  选择“Choose directory to use”框中的“browse”按钮,翻开window的阅读窗口,选择要序列化的文件夹,例如本演示中选择的的目录:D:\xyx\语义文字。选择“Choose directory to save”框中的“browse”按钮,翻开window的阅读窗口,选择要保存文件方位,本实例中选择的目录是:D:\xmlFile。在“Input filename”后边的文本框中输入所生成的xml文件的名字:myFirstXml。点击“view”按钮,则可看到在目录D:\xmlFile下面生成了一个名字为myFirstXml的xml文件,如图6所示。应用任何可以修正xml文件的修正器翻开xml文件,会发现xml中的内容如图7所示,翻开xml中的任何一个节点,可以发现文字的根据文件中的内容所标示出来的的语义信息[5],如上下结构中“吉”的语义信息如图8所示。

  5 结束语

  本文描述了应用C#言语在VS2013环境下将windows中目录信息应用xml文档存储的方法,展现了根据此方法做出来的系统及其应用。所生成的xml文档可以跨平台应用的并且不需要用户装置任何的软件和装备任何的参数,提高了程序的运转速度,为目录树拜访的项目开发提供了方便和支持。

电子技术 - 投稿流程 - 联系我们 - 网站地图 - sitemap

(工作时间:8:30-23:00)

期刊版面咨询

审稿咨询