亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        目錄樹的XML文檔的自動(dòng)生成

        2017-04-15 11:32:52田喜平牛紅惠裴世凱
        電腦知識(shí)與技術(shù) 2016年34期

        田喜平+牛紅惠+裴世凱

        摘要:手工編輯生成XML 數(shù)據(jù)文檔不能適應(yīng)快速大量的數(shù)據(jù)交換要求,也很難滿足靈活多變的應(yīng)用需求。并且很多時(shí)候盡管代碼結(jié)構(gòu)類似,卻不能直接重用,使得每次工作都從零開始。文中分析了windows的文件系統(tǒng)中目錄樹和文件特點(diǎn),討論了使用遞歸算法遍歷文件系統(tǒng)的方法,最終基于VS平臺(tái)使用C#語(yǔ)言完成了描述目錄樹的XML文檔的自動(dòng)生成系統(tǒng)。所產(chǎn)生的XML文檔詳細(xì)地對(duì)目錄文件信息進(jìn)行描述,方便在不同平臺(tái)下的數(shù)據(jù)處理。

        關(guān)鍵詞:目錄樹;XML描述;文檔自動(dòng)生成;C#

        中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 背景

        目錄樹從根到各級(jí)子目錄項(xiàng)是一種有級(jí)別差隸屬關(guān)系的分支層次結(jié)構(gòu)[1],有關(guān)文件管理和調(diào)用的許多應(yīng)用都涉及目錄樹的查找和遍歷。在實(shí)際的應(yīng)用程序開發(fā)過(guò)程中,經(jīng)常會(huì)遇到如何查找某一文件以確定此文件的路徑問(wèn)題,也會(huì)將通過(guò)目錄樹查找資源,如:圖片、文本等。

        微軟提供了使用TreeView控件把數(shù)據(jù)按照樹形結(jié)構(gòu)組織并顯示出來(lái),很直觀的描述復(fù)雜的層次關(guān)系[2]。但是使用此控件描述出來(lái)的層次關(guān)系很難將其保存出來(lái),每次都要運(yùn)行程序依次獲取信息信息。為了提高程序的運(yùn)行效率,需要將將目錄樹的信息存儲(chǔ)起來(lái),方便在程序中必然要去獲取和使用這些信息。有人試著使用數(shù)據(jù)庫(kù)存儲(chǔ)此部分信息[3],但是據(jù)庫(kù)存儲(chǔ)不能夠跨平臺(tái)而且用戶在使用的時(shí)候需要安裝龐大的數(shù)據(jù)庫(kù)軟件和做一些比較繁瑣的配置,為大多數(shù)對(duì)數(shù)據(jù)庫(kù)不熟的用戶帶了不便。

        Xml是可擴(kuò)展標(biāo)記語(yǔ)言[4],可以用它來(lái)描述事物的信息,且能夠完成的描述為樹形結(jié)構(gòu)。同時(shí),Xml文檔是跨平臺(tái),并且使用不需要用戶安裝任何的軟件和配置任何的參數(shù),通過(guò)XmlDocument類能夠直接對(duì)內(nèi)部信息進(jìn)行操作。本文提出了一種目錄樹的XML文檔的自動(dòng)生成方法。將可以自動(dòng)將文件目錄樹中的相關(guān)數(shù)據(jù)轉(zhuǎn)換成XML 數(shù)據(jù)文檔,轉(zhuǎn)化出來(lái)的XML文檔能夠詳細(xì)對(duì)文件信息進(jìn)行描述方便在不同平臺(tái)下對(duì)數(shù)據(jù)進(jìn)行處理。避免了手工編輯生成XML 數(shù)據(jù)文檔不能適應(yīng)快速大量的數(shù)據(jù)交換要求。

        2 文件目錄樹

        Windows通過(guò)目錄樹的形式對(duì)文件和文件夾進(jìn)行管理,如圖1所示。

        結(jié)構(gòu)清晰,便于理解和讀取。采用樹形目錄結(jié)構(gòu)有如下優(yōu)點(diǎn):1)解決了重名問(wèn)題,允許不同的用戶用相同的名字去命名文件;2)有利于文件的分類,可以把不同類型的文件登錄在不同的子目錄下,便于查找和管理;3)能提高搜索文件的速度,可以從當(dāng)前目錄開始設(shè)置路徑(稱相對(duì)路徑),從而縮短搜索路徑,提高搜索速度;4)可防止用戶共享文件時(shí)破壞文件,對(duì)各級(jí)目錄或文件規(guī)定存取權(quán)限,凡能得到某級(jí)目錄權(quán)限的用戶就可得到該級(jí)目錄以及所屬的子目錄和文件,按規(guī)定的存取權(quán)限去使用目錄和文件,達(dá)到保護(hù)文件的目的。

        XML是一種可擴(kuò)展標(biāo)記語(yǔ)言 (Extensible Markup Language,),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。XML 提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。并且在各種環(huán)境下都能夠提供了對(duì)XML操作的接口或類,如C#中提供XMLDocument操作xml文檔,C++中提供了---操作XML文檔,Java提供------操作XML文檔等。

        3 基于C#的目錄樹的Xml描述文檔的自動(dòng)生成

        3.1 文檔的生成原理

        對(duì)要生成xml文檔的目錄進(jìn)行設(shè)定,設(shè)定完成后此目錄將是XML文檔的根節(jié)點(diǎn)。接著依次找當(dāng)前目錄下的每一個(gè)實(shí)體(文件或是子目錄),生成上一級(jí)目錄節(jié)點(diǎn)對(duì)應(yīng)的子節(jié)點(diǎn);如果當(dāng)前目錄中包含子目錄,則遞歸調(diào)用節(jié)點(diǎn)生成函數(shù)將其設(shè)定為上一級(jí)目錄節(jié)點(diǎn)對(duì)應(yīng)的子節(jié)點(diǎn),指導(dǎo)目錄將不包含子目錄了為止。這樣多個(gè)子節(jié)點(diǎn)生成函數(shù),反復(fù)進(jìn)行遞歸調(diào)用,就可以實(shí)現(xiàn)對(duì)整個(gè)目錄樹的XML序列化。

        3.2 具體實(shí)現(xiàn)

        1)設(shè)置配置文件

        Config文件能夠?qū)⒚钚羞x項(xiàng)和配置文件選項(xiàng)統(tǒng)一到一種數(shù)據(jù)結(jié)構(gòu)中。通過(guò)使用Config文件,能夠在外部設(shè)置項(xiàng)目中所用參數(shù),而無(wú)須修改代碼去設(shè)置相關(guān)的數(shù)據(jù),實(shí)現(xiàn)了配置選項(xiàng)和代碼分離。在本項(xiàng)目中,設(shè)置如圖2所示的Config文件,在此文件中完成了對(duì)要序列化的目錄樹、所生成的xml文件名、所保存的路徑等相關(guān)信息進(jìn)行了設(shè)置。

        2)定義xml節(jié)點(diǎn)信息

        為了能夠?qū)⒛夸浐妥幽夸浀脑敿?xì)標(biāo)注在xml文件中,定了xml節(jié)點(diǎn)的描述信息,通過(guò)類XmlNode來(lái)顯示,具體代碼如圖3所示。

        3)xml文件的自動(dòng)生成

        根據(jù)所輸入要生成的序列化的目錄,寫一個(gè)遞歸遍歷方法完成序列化過(guò)程,并將序列化的結(jié)果寫入到xml文件中,算法的具體實(shí)現(xiàn)過(guò)程描述如下:

        輸入:要序列化的目錄

        輸出:根據(jù)目錄生成的xml文件

        Step1:初始化相關(guān)信息(xml文件的保存路徑、名字;要被序列化的目錄的名字、路徑等);

        Step2:判斷xml文件保存的路徑是否存在,如果存在則進(jìn)行step3,否則跳轉(zhuǎn)step4;

        Step3:則將原有的刪除,重新按照初始化信息生成保存路徑;

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

        Step5:判斷要保存的xml文件路徑和要序列化的目錄樹是否為空,如果為空則拋出異常,否則繼續(xù)step6;

        Step6:設(shè)置文件流和xml文本寫入對(duì)象;

        Step7:設(shè)計(jì)一個(gè)遞歸遍歷方法完成xml信息寫入;

        Step7.1:選擇的序列化目錄路徑;

        Step7.2:判斷要序列化目錄路徑是否存在,如果存在則生成一個(gè)目錄對(duì)象,否則結(jié)束算法;

        Step7.3:獲取目錄對(duì)象的相關(guān)信息,如:包含的子目錄個(gè)數(shù)和文件個(gè)數(shù);

        Step7.4:生成xml文件的節(jié)點(diǎn),此節(jié)點(diǎn)描述出目錄對(duì)象的相關(guān)信息,如:目錄名字和子目錄數(shù)量等;

        Step7.5:判斷子目錄是否存在,如果存在則遍歷所有的子目錄,對(duì)每個(gè)子目錄遞歸Step 7.3直到當(dāng)前目錄中不存在子目錄為止;該目錄是否有子文件,有則進(jìn)行Step7.6,無(wú)則進(jìn)行Step8;

        Step7.6:統(tǒng)計(jì)子文件所在目錄的名字和子文件的個(gè)數(shù),根據(jù)目錄名字生成xml的一個(gè)節(jié)點(diǎn)名,同時(shí)為這個(gè)節(jié)點(diǎn)添加其子節(jié)點(diǎn)個(gè)數(shù)的屬性。遍歷這個(gè)目錄的子文件集合,得到子文件的全路徑,生成一個(gè)與子文件的名字相同的節(jié)點(diǎn),將該文件的路徑作為一個(gè)值寫進(jìn)去。然后判斷這個(gè)目錄對(duì)象是否有子目錄,有則進(jìn)行Step7.3,無(wú)則進(jìn)行Step8;

        Step8:關(guān)閉xml文件寫入和文件流。

        4 應(yīng)用實(shí)例

        根據(jù)上面的設(shè)計(jì)方案,開發(fā)了一款界面如圖4所示的系統(tǒng)。

        選擇“Choose directory to use”框中的“browse”按鈕,打開window的瀏覽窗口,選擇要序列化的文件夾,例如本演示中選擇的的目錄:D:\xyx\語(yǔ)義文字。選擇“Choose directory to save”框中的“browse”按鈕,打開window的瀏覽窗口,選擇要保存文件位置,本實(shí)例中選擇的目錄是:D:\xmlFile。在“Input filename”后面的文本框中輸入所生成的xml文件的名字:myFirstXml。點(diǎn)擊“view”按鈕,則可看到在目錄D:\xmlFile下面生成了一個(gè)名字為myFirstXml的xml文件,如圖6所示。使用任何可以編輯xml文件的編輯器打開xml文件,會(huì)發(fā)現(xiàn)xml中的內(nèi)容如圖7所示,打開xml中的任何一個(gè)節(jié)點(diǎn),能夠發(fā)現(xiàn)文字的根據(jù)文件中的內(nèi)容所標(biāo)注出來(lái)的的語(yǔ)義信息[5],如上下結(jié)構(gòu)中“吉”的語(yǔ)義信息如圖8所示。

        5 結(jié)束語(yǔ)

        本文描述了使用C#語(yǔ)言在VS2013環(huán)境下將windows中目錄信息使用xml文檔存儲(chǔ)的方法,展示了根據(jù)此方法做出來(lái)的系統(tǒng)及其應(yīng)用。所生成的xml文檔能夠跨平臺(tái)使用的而且不需要用戶安裝任何的軟件和配置任何的參數(shù),提高了程序的運(yùn)行速度,為目錄樹訪問(wèn)的項(xiàng)目開發(fā)提供了方便和支持。

        參考文獻(xiàn):

        [1] 趙曉琴. 讓W(xué)indows7資源管理器也顯示目錄樹[J]. 電腦愛好者, 2012(1): 39-39.

        [2] 周炎濤, 陳賢謀. ASP.NET中TreeView控件與數(shù)據(jù)庫(kù)結(jié)合創(chuàng)建動(dòng)態(tài)目錄樹[J]. 航空計(jì)算技術(shù), 2004, 34(2): 25-27.

        [3] 李貴輝, 宋秀云. 基于WEB的動(dòng)態(tài)目錄樹創(chuàng)建與應(yīng)用[J]. 電腦知識(shí)與技術(shù): 學(xué)術(shù)交流, 2006(1): 71-72.

        [4] 田中雨, 郭磊. XML實(shí)踐教程[M]. 北京: 清華大學(xué)出版社, 2016.

        [5] 凌海云, 左志宏, 陳蘭, 等. 語(yǔ)義標(biāo)注元數(shù)據(jù)及其抽取技術(shù)[J]. 計(jì)算機(jī)應(yīng)用研究, 2004, 21(7): 147-149.

        国产乱人视频在线观看播放器| 国产毛片精品一区二区色| 在线观看国产一区二区av| 国产丝袜长腿美臀在线观看| 成人精品一区二区三区电影| 一本一道波多野结衣一区| 射精情感曰妓女色视频| 99热门精品一区二区三区无码| 加勒比一本大道大香蕉| 国产91精品一区二区麻豆亚洲| 免费a级毛片在线播放不收费| 337人体做爰大胆视频| 日本女优中文字幕看片| 亚洲国产综合性感三级自拍| 青青草免费在线视频久草| 成人影院在线视频免费观看| 色一情一乱一伦麻豆| 国产suv精品一区二区| 无码高潮久久一级一级喷水 | 精选二区在线观看视频| 国产av剧情刺激对白| 国产av无码国产av毛片| 国产麻豆md传媒视频| 国产一区二区三区啪| 亚洲精品尤物av在线网站 | 国产色无码精品视频国产| 国产又色又爽又刺激视频| 欧美综合自拍亚洲综合百度| 一区二区三区精品亚洲视频| 国产免费在线观看不卡| 国产精品多p对白交换绿帽| 人妻少妇av无码一区二区| 久久er这里都是精品23| 夜夜高潮夜夜爽免费观看| 免费无码a片一区二三区| 亚洲深深色噜噜狠狠爱网站| 漂亮的小少妇诱惑内射系列| 伊人加勒比在线观看视频| 性大毛片视频| 中国精品视频一区二区三区 | 日产一区二区三区免费看|