目录树的XML文档的自动生成

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:liuwuguigui
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:手工编辑生成XML 数据文档不能适应快速大量的数据交换要求,也很难满足灵活多变的应用需求。并且很多时候尽管代码结构类似,却不能直接重用,使得每次工作都从零开始。文中分析了windows的文件系统中目录树和文件特点,讨论了使用递归算法遍历文件系统的方法,最终基于VS平台使用C#语言完成了描述目录树的XML文档的自动生成系统。所产生的XML文档详细地对目录文件信息进行描述,方便在不同平台下的数据处理。
  关键词:目录树;XML描述;文档自动生成;C#
  中图分类号:TP311.5 文献标识码:A 文章编号:1009-3044(2016)34-0112-03
  Abstract: It is very difficult for XML document generated manually to meet the requirements for fast large amounts of data exchange, and to the flexible and diverse application requirements. Although codes are nearly resemble each other, they cannot be reused directly, which makes every work from scratch. This paper analyzed the characteristics of directory tree on Windows file system, discusses the method traversing the file system using recursion algorithm, and developed the system based on VS platform using c # language, which can automatically Generate XML Document of Directory Tree. These XML documents include the related information of directory tree, and provide convenience for data processing in different platform.
  Key words: directory tree; XML description; automatic generation of document; C#
  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文档能够跨平台使用的而且不需要用户安装任何的软件和配置任何的参数,提高了程序的运行速度,为目录树访问的项目开发提供了方便和支持。
  参考文献:
  [1] 赵晓琴. 让Windows7资源管理器也显示目录树[J]. 电脑爱好者, 2012(1): 39-39.
  [2] 周炎涛, 陈贤谋. ASP.NET中TreeView控件与数据库结合创建动态目录树[J]. 航空计算技术, 2004, 34(2): 25-27.
  [3] 李贵辉, 宋秀云. 基于WEB的动态目录树创建与应用[J]. 电脑知识与技术: 学术交流, 2006(1): 71-72.
  [4] 田中雨, 郭磊. XML实践教程[M]. 北京: 清华大学出版社, 2016.
  [5] 凌海云, 左志宏, 陈兰, 等. 语义标注元数据及其抽取技术[J]. 计算机应用研究, 2004, 21(7): 147-149.
其他文献
摘要:目前我国云计算与大数据相关产业发展进入到高速规模化增长阶段,对相关产业人发展所需要的人才也出现空前增长趋势,该文针对高职院校云计算应用型创新人才培养模式探究,按照新型工程教育模式的基本理念,分析云计算与大数据相关产业的培养模式和方案,讨论课程设置以及项目化教学,提出高职院校培养云计算应用型创新人才的实现路径。  关键词:云计算;大数据;人才培养;课程设置;项目化教学  中图分类号:G642
诗词鉴赏是阅读能力中层次最高的一个层级,它既是高考的一个传统内容,也是考生失分较多的一种题型。特别是自2002年起,诗歌鉴赏的考查发生了较大的变化:1,材料只选卉诗词;2,变客观题为主观题,且出现在第Ⅱ卷中,以前靠蒙、靠猜的做法显然已行不通。那么,怎样才能迅速而准确地把握作者的写作意图、解读诗词的意境、探寻诗词的主题,从而顺利完成鉴赏任务,也许下面的一些做法不失为一种“捷径”。    一、弄清楚诗
“自由状态下的写作”是相对于“不自由状态”而言的,是基于学生缺乏写作兴趣.害怕作文采取的措施。
当下,我们课程论专家的高端研究与一线教师课堂低端操作探索如何实现接轨成了我们新课标新理念继续有效走向深入的瓶颈。于是我们路桥实验中学试图在课堂操作层面建构起时文评点专题阅读校本课程。  我们在研制时文评点专题阅读时,我们努力研制的方向有两个:我们时文评点评什么。另一个方向是我们对这些内容怎么评。  对于时文评什么的问题,我们也认为现代社会的发展可能改变了以往实现语文学习的外延与生活的外延相等这样大
苏教版九上、人教版九上选《史记·陈涉世家》其文中:陈胜、吴广乃谋曰:“今亡亦死,举大计亦死,等死,死国可乎?”“死国”课本、教参均释“为国而死”或“为国事而死”。郭锡良、唐作藩等主编《古代汉语》所选《陈涉起义》中“死国”也注释成“为国而死”。为哪一国而死,注释不明确。此“国”当指楚国。“死国”指为楚国而死。首先,下文有据为证:⑴“又间令吴广之次所旁丛祠中,夜篝火,狐鸣呼曰:‘大楚兴,陈胜王’”。⑵
应该说,语文高考这些年取得了很大成绩。但是,问题不少。我经常想,如果能够编写出一套令全体教师、学生叫好的语文试题,那该是多么美好的事情啊!但我知道,这只是幻想。
由于欧美等发达国家药品市场渐趋饱和,政府大多采取限制药价的政策以减少药费支出,加之目前一些受专利保护的畅销药物专利期将至不得不降低药价,以及新的“重磅”式的专利药物开
目前,由于全球石油价格居高不下,各石油消费国正在转向使用价格相对便宜的天然气。天然气比煤和石油具有环境保护的优势,降低污染排放的压力和燃料电池技术的发展也刺激了天然气
软件定义网络(Software Defined Networking,SDN)的基本思想是将数据平面与控制平面解耦和,从而简化网络管理。无线网络应用该思想,开放无线网络可编程接口,分离无线控制平面与数据平面,诞生了软件定义无线网络(Software Defined Wireless Networking,SDWN)。重点介绍了SDWN中软件定义无线局域网(Software Defined Wire