treeView绑定XML文档

 在家这两天,共装了两遍系统 (郁闷啊。。),现在不能连adsl网络的问题终于解决了(原来是网卡驱动的问题,我晕啊)!!呵呵废话不多说了。要想让treeView绑定XML文档,只需编写一个递归过程就行了。XML代码如下:

 

<? xml version="1.0" encoding="utf-8"  ?>
 
<!--  注意:treeview 为根结点,nodes 为父级节点,node 为子节点。
  
-->
< treeview >
 
< nodes >
    
< name > 根节点1 </ name >
    
< zuozhe  />
    
< liupai  />
    
< link  />
  
< node >
      
< name > 测试节点1 -1 </ name >
      
< zuozhe  />
      
< liupai  />
    
</ node >
    
< node >
      
< name > 测试节点1 -2 </ name >
      
< zuozhe  />
      
< liupai  />
      
< link  />
    
</ node >
  
</ nodes >

 

在页面中加一个TreeView控件和一个button控件。写一个递归过程如下:

///  < summary >
        /// 构建树。遍历XML所有的节点
        /// 
</ summary >
        /// 
< param  name ="XMLNodes" > XML节点 </ param >
        /// 
< param  name ="TreeNode" > 树的当前节点 </ param >
        private void BuildTree(XmlNodeList XMLNodes, TreeNodeCollection treeNodes)
        {
            string sValue;
            for (int i = 0; i 
<  XMLNodes .Count; i++)
            {
                if (XMLNodes[i].NodeType 
==  XmlNodeType.Element)
                {
                    TreeNode tNode 
= new  TreeNode();
                    sValue 
= "" ;
                    if (XMLNodes[i].HasChildNodes && XMLNodes[i].ChildNodes.Count 
==  1 && XMLNodes[i].ChildNodes[0].NodeType  ==  XmlNodeType.Text)
                    {
                        sValue 
= XMLNodes[i].ChildNodes[0].Value;
                    
}
                    else
                    {
                        for (int j 
= 0;  j < XMLNodes[i].Attributes.Count; j++)
                        {
                            sValue +
= XMLNodes[i].Attributes[j].Name  + " =" + XMLNodes[i].Attributes[j].Value + " ;";
                        }
                    }
                    if (sValue 
==  "")
                    {
                        tNode.Text 
= XMLNodes[i].Name;
                    
}
                    else
                    {
                        tNode.Text 
= XMLNodes[i].Name  + ":" + sValue;
                    }
                    treeNodes.Add(tNode);
                    if(XMLNodes[i].HasChildNodes)
                    {
                        BuildTree(XMLNodes[i].ChildNodes, tNode.Nodes);

                    }

                }

          

双击button,加入以下代码:

 

private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc=new XmlDocument();
            doc.Load(@"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\XMLFile1.xml");                       
            BuildTree(doc.ChildNodes, treeView1.Nodes); ||调用递归
          
        }

你可能感兴趣的:(treeview)