如何將填入具有 XML 資料在 Visual C# 2005年中或在 Visual C#.NET 中的樹狀檢視控制項

文章翻譯 文章翻譯
文章編號: 317597 - 檢視此文章適用的產品。
本文章的有 Microsoft Visual Basic.NET] 版本請參閱 308063
全部展開 | 全部摺疊

在此頁中

結論

步驟依步驟本文將告訴您,如何以使用 「 可延伸標記語言 」 (XML) 資料,在 Microsoft Visual C# 2005年或 Microsoft Visual C#.NET 中填入 樹狀檢視 控制項。因為 XML 和 樹狀檢視 控制項代表階層式格式中的資料,樹狀檢視 控制項就會是一個自然的選擇來顯示 XML 資料。

樹狀檢視 控制項具有與根 TreeNode 物件的 節點 集合。每個 TreeNode 輪流具有擁有一個以上的子系 TreeNode 它自己 節點 集合。

附註這個範例使用文件物件模型 (DOM) 剖析處理 XML 的.NET 類別。

有關更多如何設計的.NET Framework 中的 XML,請參閱 < References > 一節。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows XP、 Microsoft Windows 2000 或 Microsoft Windows NT 4.0 Service Pack 6a
  • Microsoft 資料存取元件 2.6 (MDAC) 或更新版本
  • Microsoft Visual Studio 2005 或 Microsoft Visual Studio.NET
本文假設您已熟悉下列主題:
  • Visual C# 2005年語法或 Visual C#.NET 語法
  • XML 和相關的標準
  • Windows Form

建立及填入樹狀檢視控制項,以 XML 的步驟

  1. 下列 XML 範例程式碼貼中名為 Sample.xml"的新文字檔。這個檔案是這個範例的 XML 資料範例:
    <?xml version="1.0"?>
    <family>
    <parent>id="grandfather"
        <parent>id="father"
             <parent>id="brother"
                <child>id="niece"
                </child>
             </parent>
             <parent>id="me"
                <child>id="son"</child>
                <child>id="daughter"</child>
             </parent>
             <child>id="sister"</child>
         </parent>
         <parent>id="uncle"
             <parent>id="cousin sister"
                <child>id="second cousin"</child>
             </parent>
             <child>id="cousin brother"</child>
         </parent>
    </parent>
    </family>
  2. 在 Visual C# 2005年或 Visual C#.NET,請建立新的 Windows 架構應用程式。 Form1 加入到應用程式上,根據預設值。
  3. 將新的 樹狀檢視]、 [按鈕]、 [標籤,] 和 [TextBox 控制項拖曳到 Form1。
  4. 將下列的範例程式碼加入 Form1.cs 中的 [使用] 指示詞區段結尾處:
    using System.Xml;
    					
  5. 下列範例程式碼貼入 Form1_Load 事件:
          
             // Initialize the controls and the form.
             label1.Text = "File Path";
             label1.SetBounds(8, 8, 50, 20);
             textBox1.Text = Application.StartupPath + "\\Sample.xml";
             textBox1.SetBounds(64, 8, 256, 20);
             button1.Text = "Populate the TreeView with XML";
             button1.SetBounds(8, 40, 200, 20);
             this.Text = "TreeView control from XML";
             this.Width = 336;
             this.Height = 368;
             treeView1.SetBounds(8, 72, 312, 264);
    					
  6. 下列程式碼貼入 Button1_Click 事件:
             try 
             {
                // SECTION 1. Create a DOM Document and load the XML data into it.
                XmlDocument dom = new XmlDocument();
                dom.Load(textBox1.Text);
    
                // SECTION 2. Initialize the TreeView control.
                treeView1.Nodes.Clear();
                treeView1.Nodes.Add(new TreeNode(dom.DocumentElement.Name));
                TreeNode tNode = new TreeNode();
                tNode = treeView1.Nodes[0];
    
                // SECTION 3. Populate the TreeView with the DOM nodes.
                AddNode(dom.DocumentElement, tNode);
                treeView1.ExpandAll();
             }
             catch(XmlException xmlEx)
             {
                MessageBox.Show(xmlEx.Message);
             }
             catch(Exception ex)
             {
                MessageBox.Show(ex.Message);
             }
    					
  7. 下列的範例程式碼貼 Button1_Click 事件之後:
          private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
          {
             XmlNode xNode;
             TreeNode tNode;
             XmlNodeList nodeList;
             int i;
    
             // Loop through the XML nodes until the leaf is reached.
             // Add the nodes to the TreeView during the looping process.
             if (inXmlNode.HasChildNodes)
             {
                nodeList = inXmlNode.ChildNodes;
                for(i = 0; i<=nodeList.Count - 1; i++)
                {
                   xNode = inXmlNode.ChildNodes[i];
                   inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
                   tNode = inTreeNode.Nodes[i];
                   AddNode(xNode, tNode);
                }
             }
             else
             {
                // Here you need to pull the data from the XmlNode based on the
                // type of node, whether attribute values are required, and so forth.
                inTreeNode.Text = (inXmlNode.OuterXml).Trim();
             }
          }                  
       }
    }
    					
  8. 按下 F5 以建置並執行應用程式。請確定 XML 檔案路徑正確,然後按一下 按鈕。XML 資料應該會顯示在 樹狀檢視 控制項。
附註資源可能是一個檔案是 URL 或 XML 資料流。請參閱 < References > 一節使用 XmlDocument 類別從不同的資源載入的 XML 資料的相關資訊。

若要填入樹狀檢視控制項與必要的資料的步驟

先前的程式碼範例會對應 XML 樹狀目錄資料,直接到 樹狀檢視,並顯示所有資料。或者,加入至顯示額外的資訊,或略過不想要的資料。

在許多情況下,您可能要顯示部分 XML 資料。您想要顯示的資料部分可能會以動態方式建構的 「 可延伸樣式表語言 (XSL)] 轉換的結果或 XPath 查詢的結果。本節說明如何建立新的 XML 文件具有必要的節點,然後將新的文件加入至 樹狀檢視 控制項。

比方說下列步驟使用 XPath 查詢擷取只的項目子系 originial XML 資料] 中,然後再新增這份清單做為新的節點至 樹狀檢視 中。
  1. 貼上下列程式碼之前先前的範例中的某 TreeView1.ExpandAll 一行:
                // SECTION 4. Create a new TreeView Node with only the child nodes.
                XmlNodeList nodelist = dom.SelectNodes("//child");
                XmlDocument cDom = new XmlDocument();
                cDom.LoadXml("<children></children>");
                foreach(XmlNode node in nodelist)
                {
                   XmlNode newElem = cDom.CreateNode(XmlNodeType.Element, node.Name, node.LocalName);
                   newElem.InnerText = node.InnerText;
                   cDom.DocumentElement.AppendChild(newElem);
                }
             
                treeView1.Nodes.Add(new TreeNode(cDom.DocumentElement.Name));
                tNode = treeView1.Nodes[1];
                AddNode(cDom.DocumentElement, tNode);
    					
  2. 建置並執行應用程式。這個應用程式應該在 樹狀檢視 中,除了原始資料中顯示新的 「 兒童 」 根節點。

參考

如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
313651在.NET Framework 中的 XML 的藍圖
如需詳細資訊請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/system.xml(vs.71).aspx

http://msdn2.microsoft.com/en-us/xml/default.aspx

屬性

文章編號: 317597 - 上次校閱: 2007年5月17日 - 版次: 4.6
這篇文章中的資訊適用於:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
關鍵字:?
kbmt kbbcl kbctrl kbhowtomaster kbwindowsforms KB317597 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:317597
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com