日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

    談到xml,相信有1定編程基礎(chǔ)的童鞋們都比較清楚了。xml文件格式類似于嵌套的樣式,這類獨特的層次結(jié)構(gòu)很容易使我們聯(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)給我們他們之間的層次關(guān)系,接下來,我們就將此xml中的區(qū)域與c#的TreeView進(jìn)行聯(lián)系,從而到達(dá)我們想要的目錄樹效果。

   首先我們需要將xml加載到TreeView中。加載xml也就是我們所說的找到xml然后讀取xml內(nèi)容。在這里我多介紹1段關(guān)于尋覓程序集路徑的代碼,我做項目習(xí)慣于將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");//獲得結(jié)點nativeplace nodes = xmlNode.ChildNodes;//獲得nativeplace結(jié)點下的所有孩子結(jié)點,此孩子是真孩子結(jié)點,并不是所有的“后代”結(jié)點 bindXmlToTreeView(nodes, nativePlaceTreeView.Nodes);//該方法是將xml結(jié)點加載到TreeView目錄樹中
接下來我們所做的便是如何遍歷nativeplace下所有子結(jié)點和孫子結(jié)點等。方法以下:

public void bindXmlToTreeView(XmlNodeList nodeList, TreeNodeCollection treeNode) { foreach (XmlNode node in nodeList) { XmlElement xe = (XmlElement)node; //創(chuàng)建1個xml元素,將獲得的每個結(jié)點轉(zhuǎn)換成xml元素,方便對其進(jìn)行屬性賦值。 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);//孫子結(jié)點加載 } } }
   這樣我們就創(chuàng)建好了1個目錄樹,接下來我展現(xiàn)1下我之前創(chuàng)建好的1個目錄樹的效果圖:



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

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

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

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


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



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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 黄色片网站在线观看 | 国产精品区在线观看 | 国产精品久久久久av福利动漫 | 精品粉嫩aⅴ一区二区三区四区 | 中文字幕亚洲国产 | 欧美日韩视频一区二区 | 国产成人久久精品 | 国产成人高清精品免费5388 | 麻豆精品国产传媒mv男同 | 成人国产一区 | av高清在线 | 中文字幕久久精品 | 亚洲精品久久久久久一区二区 | 国产一区二区三区视频在线 | 青草青草 | 欧美成人精品一区二区三区 | 视频在线二区 | a视频在线观看免费 | 中文字幕久久精品 | 欧美视频一区二区三区 | 国产精品第一国产精品 | 亚洲午夜在线视频 | 国产69久久精品成人看 | 午夜日韩在线 | 精品久久中文 | 国产成人精品视频 | 成人免费视频网站在线观看 | 成人精品久久久 | 波多野结衣av电影 | 午夜精品福利视频 | 最近中文字幕mv免费高清在线 | 日韩精品一区二区三区中文在线 | 午夜男人网 | 日韩三级在线观看 | 99在线免费视频 | 九色一区 | 久久午夜视频 | 综合国产 | 视频一区在线 | 日本一区二区中文字幕 | 精品国产欧美一区二区三区成人 |