如何把一个XML文件读取到treeView中呢?

解决方案 »

  1.   

    可以一层一层节点的找出添加到treeview上
      

  2.   

    读出来,组成一个树,然后再递归加到treeview上吧
      

  3.   

    /// <summary>
            /// 生成树
            /// </summary>
            private void GenerateTree(string strSelNode)
            {
                //生成之前,将其置为空
                this.dtCache = null;            tvComponent.Nodes.Clear();            DataRow[] dv = dt.Select("Father_ID=0");            //DataView dv = dt.DefaultView;
                //dv.RowFilter = "Father_ID=0";            //添加右键菜单
                foreach (DataRow dr in dv)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = dr["Component_Name"].ToString();
                    tn.Tag = dr["Component_ID"].ToString() + "," + dr["Type_Code"].ToString();
                    
                    //ContextMenu menu = new ContextMenu();
                    //MenuItem item1 = new MenuItem("新增", new EventHandler(BtnNewBuilder));
                    //MenuItem item2 = new MenuItem("修改", new EventHandler(BtnDeleteBuilder));
                    //MenuItem item3 = new MenuItem("刷新", new EventHandler(BtnGenerateTree));
                    //MenuItem item4 = new MenuItem("导出", new EventHandler(btnExport_Click));                //menu.MenuItems.Add(item1);
                    //menu.MenuItems.Add(item2);
                    //menu.MenuItems.Add(item3);
                    //menu.MenuItems.Add(item4);
                    //tr.ContextMenu = menu;                tvComponent.Nodes.Add(tn);                AppendSubNode(tn);
                }            //防止没有结点时报错
                //if (this.tvComponent.Nodes.Count > 0)
                //{
                //    this.tvComponent.Nodes[0].Expand();
                //}        /// <summary>
            /// 追加子结点
            /// </summary>
            /// <param name="tr"></param>
            private void AppendSubNode(TreeNode tr)
            {
                string strID = tr.Tag.ToString().Split(',')[0];            DataRow[] dv = dt.Select(string.Format("Father_ID = '{0}'",strID));
                //DataView dv = dt.DefaultView;
                //dv.RowFilter = "Father_ID = '" + strID + " '";            if (dv.Length > 0)
                {
                    foreach (DataRow dr in dv)
                    {
                        TreeNode subtr = new TreeNode();
                        subtr.Text = dr["Component_Name"].ToString();
                        subtr.Tag = dr["Component_ID"].ToString() + "," + dr["Type_Code"].ToString();                    //如果是设备节点图片用合着的文件夹
                        if (dr["Type_Code"].ToString() == ((int)EnumCollections.ComponentType.Equipment).ToString())
                        {
                            subtr.ImageIndex = 1;
                        }                    tr.Nodes.Add(subtr);                    //递归调用
                        AppendSubNode(subtr);
                    }
                }
            }  
            }这是从datatable中加载的,xml可以读入dataset后再调用上面方法  
    DataSet ds = new  DataSet();
    ds.ReadXml(xmlFile);
      

  4.   

    xml文件
    <?xml version="1.0" encoding="utf-8" ?>
    <gen text="总目录">
    <zi1 text="第一目录" url="~/Main2.aspx" target="f2">
    <sun1 text="叶目录a" url="~/Main2.aspx">
    </sun1>
    <sun2 text="叶目录b" url="~/Main2.aspx">
    </sun2>
    </zi1>
    <zi2 text="第二目录" url="~Main1.aspx">
    <sun3 text="叶目录d" url="~main22.aspx"></sun3>
    <sun4 text="叶目录c" url="~/Main2.aspx">
    </sun4>
    </zi2>
    </gen>
    aspx文件
      <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" ImageSet="BulletedList3"
                LineImagesFolder="~/TreeLineImages" ShowExpandCollapse="False" ShowLines="True" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                <ParentNodeStyle Font-Bold="False" />
                <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
                    VerticalPadding="0px" />
                <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
                    NodeSpacing="0px" VerticalPadding="0px" />
                <DataBindings>
                    <asp:TreeNodeBinding DataMember="gen" TextField="text" SelectAction="SelectExpand" />
                    <asp:TreeNodeBinding DataMember="zi1" NavigateUrlField="url" TargetField="target"
                        TextField="text" />
                    <asp:TreeNodeBinding DataMember="sun1" TargetField="url" TextField="text" />
                    <asp:TreeNodeBinding DataMember="zi2" TargetField="url" TextField="text" />
                    <asp:TreeNodeBinding DataMember="sun2" TargetField="url" TextField="text" />
                    <asp:TreeNodeBinding DataMember="sun3" TargetField="url" TextField="text" />
                    <asp:TreeNodeBinding DataMember="sun4" TargetField="url" TextField="text" />
                </DataBindings>
            </asp:TreeView>
            <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml"></asp:XmlDataSource>