多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > [置頂] c#如何實現(xiàn)從xml中加載樹目錄,并且顯示完整的Text

[置頂] c#如何實現(xiàn)從xml中加載樹目錄,并且顯示完整的Text

來源:程序員人生   發(fā)布時間:2015-04-03 08:16:46 閱讀次數(shù):2953次

    談到xml,相信有1定編程基礎的童鞋們都比較清楚了。xml文件格式類似于嵌套的樣式,這類獨特的層次結構很容易使我們聯(lián)想到目錄樹,因此這不由讓我們對二者之間產(chǎn)生1種牽線的想法。這不由,使我們有這么1個問題:如何將xml存儲的數(shù)據(jù)轉(zhuǎn)換成目錄樹情勢??

    首先我先貼1段xml代碼:

<nativeplace> <China text="中國" value="中國"> <ShanDong text="山東" value="山東"> <JiNing text="濟寧" value="濟寧"> <RenChengQu text="任城區(qū)" value="任城區(qū)"> <ChangGouZhen text="長溝鎮(zhèn)" value="長溝鎮(zhèn)"> </ChangGouZhen> </ReChengQu> </JiNing> </ShanDong> </China></nativeplace>


    這段代碼很清楚的展現(xiàn)給我們他們之間的層次關系,接下來,我們就將此xml中的區(qū)域與c#的TreeView進行聯(lián)系,從而到達我們想要的目錄樹效果。

   首先我們需要將xml加載到TreeView中。加載xml也就是我們所說的找到xml然后讀取xml內(nèi)容。在這里我多介紹1段關于尋覓程序集路徑的代碼,我做項目習慣于將xml文件放在程序集bin/Debug下,緣由也是c#提供了此訪問方式。

   接下來的1段代碼便是讀取項目的程序集Debug路徑的方法:

public String GetAssemblyFileDirectory() { #region 變量說明 String FilePath, StringX; FileInfo FileInfoX;//這里我創(chuàng)建的操作文件夾的類,固然你你也能夠用其它方式 Uri UriX; #endregion #region 獲得.dll的位置 //獲得.dll文件的位置,主要是用于肯定數(shù)據(jù)庫文件 StringX = Assembly.GetCallingAssembly().CodeBase; //生成1個URI,以用于解析 UriX = new Uri(StringX); //獲得配置文件的目錄 FileInfoX = new FileInfo(UriX.LocalPath); FilePath = FileInfoX.DirectoryName; //if (!(FilePath.Substring(FilePath.Length - 1, 1) == @"")) //{ FilePath = String.Concat(FilePath, @""); } return FilePath; #endregion }
  這樣我們就獲得了xml文件的位置,接下來我們所做的就是加載xml文件。具體代碼以下:

helper = new Helper();//此類中包括了獲得程序集目錄的方法 xmlpath = helper.GetAssemblyFileDirectory() + "/Resources/Dictionary.xml"; XmlDocument xmldoc = new XmlDocument(); //創(chuàng)建xml文檔類 xmldoc.Load(xmlpath);//加載xml文檔 xmlNode = xmldoc.DocumentElement.SelectSingleNode("nativeplace");//獲得結點nativeplace nodes = xmlNode.ChildNodes;//獲得nativeplace結點下的所有孩子結點,此孩子是真孩子結點,并不是所有的“后代”結點 bindXmlToTreeView(nodes, nativePlaceTreeView.Nodes);//該方法是將xml結點加載到TreeView目錄樹中
接下來我們所做的便是如何遍歷nativeplace下所有子結點和孫子結點等。方法以下:

public void bindXmlToTreeView(XmlNodeList nodeList, TreeNodeCollection treeNode) { foreach (XmlNode node in nodeList) { XmlElement xe = (XmlElement)node; //創(chuàng)建1個xml元素,將獲得的每個結點轉(zhuǎn)換成xml元素,方便對其進行屬性賦值。 TreeNode newTreeNode = new TreeNode();//創(chuàng)建1個新的treenode,將xmlnode中信息存到treenode中。 newTreeNode.Text = xe.GetAttribute("text"); newTreeNode.Name = xe.GetAttribute("value"); treeNode.Add(newTreeNode);//將創(chuàng)建并包括信息的treenode加載到treenode集合中。 if (node.HasChildNodes) { bindXmlToTreeView(node.ChildNodes, newTreeNode.Nodes);//孫子結點加載 } } }
   這樣我們就創(chuàng)建好了1個目錄樹,接下來我展現(xiàn)1下我之前創(chuàng)建好的1個目錄樹的效果圖:



有時我們需要獲得treenode的text,但是,當我們點擊1個結點時如何獲得完全的結點名呢(就是加上其所有父節(jié)點的text)?,其實我們可以這樣來實現(xiàn):

private void okButton_Click(object sender, EventArgs e) { parentNode(nativePlaceTreeView.SelectedNode);//這里是將獲得的點擊結點傳遞過去 this.Close(); }

private void parentNode(TreeNode text) { TreeNode fullText = text; while (text.Parent != null) { fullText.Text = text.Parent.Text +fullText.Text;//這樣總是獲得結點的父節(jié)點text。 text = text.Parent;//我們text結點是傳遞過來的點擊結點,然后不斷將其父節(jié)點賦值給它,這樣就能夠向上推上去了。知道treeview中的根節(jié)點。 } nativeplace["address"] = fullText.Text;//這里只是將結點的文本復制給傳遞過來的datarow相應的列,大家可以不用管,現(xiàn)在你可以用監(jiān)視去查看1下fullText.Text就會顯示完全的目錄名了。 }

點擊肯定按鈕,則在datagridview中顯示詳細的名字:


至此xml加載到treeview的方法介紹終了!



   再次祝大家元宵節(jié)快樂!!

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人精品福利网站人 | 欧美日韩亚洲精品一区 | 欧美一欧美一区二三区性 | 午夜视频在线观看免费观看在线观看 | 成人自拍视频在线 | 手机在线看片国产日韩生活片 | 国产女人在线视频 | 337p欧洲亚洲大胆艺术 | 亚洲精品久久久午夜伊人 | 国产亚洲精品国产福利在线观看 | 日韩精品视频一区二区三区 | 欧美黑人vs亚裔videos | 中文字幕乱码中文乱码综合 | 国产大象视频一区二区 | 亚洲高清一区二区三区久久 | 亚洲春色在线播放 | 日本特交大片免费观看 | 国产精品国产三级国产a | 欧美乱大交黑人 | 欧美日韩精品一区二区在线线 | 精品国产福利久久久 | 日韩中文欧美 | 92精品国产自产在线观看48页 | 免费人成毛片乱码 | 亚洲精品一区二区三区网址 | 自拍中文字幕 | a级片中文字幕 | 亚洲欧美综合另类 | 男女激情网| 欧美日韩一区二区在线观看视频 | 一区二区三区在线播放 | 中文字幕无线精品乱码一区 | 秋霞午夜限制土鳖免费观看 | 国产精品自在线拍国产 | 久草香蕉 | 免费黄网站大全 | h国产在线| 亚洲欧美日韩国产综合久 | 久久综合精品国产一区二区三区 | 99视频精品全部免费免费观 | 99影视在线视频免费观看 |