我有一个Xml文件。现在是五层的,我想把它填充到一个treeview里去,但是每层要显示的是xml的层的属性值。而不是xml结点。如何做?给点代码参考最好。

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Page.EnableViewState = false;
                userinfo.ChkUserInfo();
                TreeInit();
            }
        }    private void TreeInit()
        {
            this.TreeView1.Nodes.Clear();
            string TreeUrl = Server.MapPath("Menu.xml");        XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(TreeUrl);
            LoadRootNode(xmlDoc.DocumentElement);
           // this.TreeView1.ExpandAll();
        }    private void LoadRootNode(XmlNode xmlNode)
        {
            TreeNode node;        foreach (XmlElement xe in xmlNode.ChildNodes)
            {
                node = new TreeNode();
                node.Text = xe.GetAttribute("Text");
                node.ImageUrl = xe.GetAttribute("ImageUrl");
                string url = xe.GetAttribute("NavigateUrl");
                string Expand = xe.GetAttribute("Expand");            if (string.IsNullOrEmpty(url))
                {                
                    node.SelectAction = TreeNodeSelectAction.Expand;
                    if (Expand == "true")
                    {
                        node.ExpandAll();
                    }
                }
                else
                {
                    node.NavigateUrl = url;
                    node.SelectAction = TreeNodeSelectAction.SelectExpand;                
                }
                this.TreeView1.Nodes.Add(node);
                if (xe.ChildNodes.Count > 0) // 递归加载
                {
                    LoadFunNode(node, xe);
                }
            }
        }    private void LoadFunNode(TreeNode treeNode, XmlNode xmlNode)
        {
            TreeNode node;        foreach (XmlElement xe in xmlNode.ChildNodes)
            {
                node = new TreeNode();
                node.Text = xe.GetAttribute("Text");
                node.ImageUrl = xe.GetAttribute("ImageUrl");
                string Expand = xe.GetAttribute("Expand");
                if (Expand == "true")
                {
                    node.ExpandAll();
                }
                string url = xe.GetAttribute("NavigateUrl");            if (string.IsNullOrEmpty(url)) 
                {
                    node.SelectAction = TreeNodeSelectAction.Expand;
                }
                else 
                {
                    node.SelectAction = TreeNodeSelectAction.Select;
                    TreeNode patNode = treeNode;                while (patNode.Parent != null)
                    {
                        patNode = patNode.Parent;
                    }                node.Text = xe.GetAttribute("Text");
                    node.NavigateUrl = xe.GetAttribute("NavigateUrl");
                    node.ImageUrl = xe.GetAttribute("ImageUrl");
                }            treeNode.ChildNodes.Add(node);            if (xe.ChildNodes.Count > 0) // 递归加载
                {
                    LoadFunNode(node, xe);
                }
               
            }
            
        }
      

  2.   

    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
    我要填充treeview层的每一个相对于xml的属性都是不一样的。
      

  3.   

    protected void Page_Load(object sender, EventArgs e)
    {
        Literal1.Text = "a<br/>b";
        XmlDocument document = new XmlDocument();
        document.Load(Server.MapPath("XMLFile.xml"));
        populateTreeControl(document.DocumentElement, TreeView1.Nodes);}
    private void populateTreeControl(XmlNode document, TreeNodeCollection nodes)
    {
        foreach (XmlNode node in document.ChildNodes)
        {
            string text = (node.Value != null ? node.Value :   (node.Attributes != null &&    node.Attributes.Count > 0) ?   node.Attributes[0].Value : node.Name);
            TreeNode new_child = new TreeNode(text);
            nodes.Add(new_child);
            populateTreeControl(node, new_child.ChildNodes);
        }
    }<?xml version="1.0" encoding="utf-8"?>
    <addressbook>
      <contacts name="aaa">
        <contact name="bbbb">
          <email id="ccc"></email>
        </contact>
        <contact name="ddd">
          <email id="eeee">
            <contact name="fff">
              <email id="ggg">
                <contact name="hhh">
                  <email id="mmm"></email>
                </contact>
              </email>
            </contact>
          </email>
        </contact>
      </contacts>
    </addressbook>方法就是这样,想怎么显示都可以啊
      

  4.   

    using Microsoft.Web.UI.WebControls;//添加控件的引用 private void GetTreeView()//程序开始 

     try 
     { 
      string strSql = "SELECT DISTINCT Menu_id,Menu_name from docmodulemanager where Menu_level = 1 and sn in   ("+All.Substring(0,All.Length-1).ToString()+")"; 
      OracleDataAdapter 
      objAdapter = new OracleDataAdapter(strSql,objConn); 
      DataSet ds = new DataSet(); 
      ds.Clear (); 
      objAdapter.Fill(ds,"temp"); 
      DataTable dt = ds.Tables["temp"]; 
      TreeView1.Nodes.Clear(); 
      //建立根节点,遍历。   foreach(DataRow dr in dt.Rows) 
      { 
       TreeNode Root = new TreeNode(); 
       Root.Text = dr["Menu_name"].ToString(); 
       TreeView1.Nodes.Add(Root);//建立根节点 
       string str = "SELECT Menu_name,menu_addr,sn from docmodulemanager where upper_id = '" + dr["Menu_id"].ToString() + "' and sn in ("+menu_sn.Substring(0,menu_sn.Length-1).ToString()+")"+"order by menu_id,child_id";    OracleDataAdapter objAdapterNode = new OracleDataAdapter(str,objConn); 
       DataSet dsNode = new DataSet(); 
       dsNode.Clear (); 
       objAdapterNode.Fill(dsNode,"tempNode"); 
       DataTable dtNode = dsNode.Tables["tempNode"];   //建立子节点,遍历。   foreach(DataRow drNode in dtNode.Rows) 
      { 
       TreeNode Node = new TreeNode(); 
       Node.Text = drNode["Menu_name"].ToString(); 
       Node.Target = "mainbottom"; 
       string Path = drNode["menu_addr"].ToString(); 
       int menusn = Convert.ToInt32(drNode["sn"].ToString()); 
       Node.NavigateUrl = "Transfer.aspx"+"?menu_addr="+ Path; 
       Root.Nodes.Add(Node);//建立子节点 
      } 
     } 

    catch 

     Response.Write(" alert('您没有可操作的菜单项,请与管理员联系!'); "); 

    finally 

     if (objConn.State.ToString().Equals ("Open")) objConn.Close(); 

      

  5.   

    using Microsoft.Web.UI.WebControls;//添加控件的引用 private void GetTreeView()//程序开始 

     try 
     { 
      string strSql = "SELECT DISTINCT Menu_id,Menu_name from docmodulemanager where Menu_level = 1 and sn in   ("+All.Substring(0,All.Length-1).ToString()+")"; 
      OracleDataAdapter 
      objAdapter = new OracleDataAdapter(strSql,objConn); 
      DataSet ds = new DataSet(); 
      ds.Clear (); 
      objAdapter.Fill(ds,"temp"); 
      DataTable dt = ds.Tables["temp"]; 
      TreeView1.Nodes.Clear(); 
      //建立根节点,遍历。   foreach(DataRow dr in dt.Rows) 
      { 
       TreeNode Root = new TreeNode(); 
       Root.Text = dr["Menu_name"].ToString(); 
       TreeView1.Nodes.Add(Root);//建立根节点 
       string str = "SELECT Menu_name,menu_addr,sn from docmodulemanager where upper_id = '" + dr["Menu_id"].ToString() + "' and sn in ("+menu_sn.Substring(0,menu_sn.Length-1).ToString()+")"+"order by menu_id,child_id";    OracleDataAdapter objAdapterNode = new OracleDataAdapter(str,objConn); 
       DataSet dsNode = new DataSet(); 
       dsNode.Clear (); 
       objAdapterNode.Fill(dsNode,"tempNode"); 
       DataTable dtNode = dsNode.Tables["tempNode"];   //建立子节点,遍历。   foreach(DataRow drNode in dtNode.Rows) 
      { 
       TreeNode Node = new TreeNode(); 
       Node.Text = drNode["Menu_name"].ToString(); 
       Node.Target = "mainbottom"; 
       string Path = drNode["menu_addr"].ToString(); 
       int menusn = Convert.ToInt32(drNode["sn"].ToString()); 
       Node.NavigateUrl = "Transfer.aspx"+"?menu_addr="+ Path; 
       Root.Nodes.Add(Node);//建立子节点 
      } 
     } 

    catch 

     Response.Write(" alert('您没有可操作的菜单项,请与管理员联系!'); "); 

    finally 

     if (objConn.State.ToString().Equals ("Open")) objConn.Close(); 

      

  6.   

    using Microsoft.Web.UI.WebControls;//添加控件的引用 private void GetTreeView()//程序开始 

     try 
     { 
      string strSql = "SELECT DISTINCT Menu_id,Menu_name from docmodulemanager where Menu_level = 1 and sn in   ("+All.Substring(0,All.Length-1).ToString()+")"; 
      OracleDataAdapter 
      objAdapter = new OracleDataAdapter(strSql,objConn); 
      DataSet ds = new DataSet(); 
      ds.Clear (); 
      objAdapter.Fill(ds,"temp"); 
      DataTable dt = ds.Tables["temp"]; 
      TreeView1.Nodes.Clear(); 
      //建立根节点,遍历。   foreach(DataRow dr in dt.Rows) 
      { 
       TreeNode Root = new TreeNode(); 
       Root.Text = dr["Menu_name"].ToString(); 
       TreeView1.Nodes.Add(Root);//建立根节点 
       string str = "SELECT Menu_name,menu_addr,sn from docmodulemanager where upper_id = '" + dr["Menu_id"].ToString() + "' and sn in ("+menu_sn.Substring(0,menu_sn.Length-1).ToString()+")"+"order by menu_id,child_id";    OracleDataAdapter objAdapterNode = new OracleDataAdapter(str,objConn); 
       DataSet dsNode = new DataSet(); 
       dsNode.Clear (); 
       objAdapterNode.Fill(dsNode,"tempNode"); 
       DataTable dtNode = dsNode.Tables["tempNode"];   //建立子节点,遍历。   foreach(DataRow drNode in dtNode.Rows) 
      { 
       TreeNode Node = new TreeNode(); 
       Node.Text = drNode["Menu_name"].ToString(); 
       Node.Target = "mainbottom"; 
       string Path = drNode["menu_addr"].ToString(); 
       int menusn = Convert.ToInt32(drNode["sn"].ToString()); 
       Node.NavigateUrl = "Transfer.aspx"+"?menu_addr="+ Path; 
       Root.Nodes.Add(Node);//建立子节点 
      } 
     } 

    catch 

     Response.Write(" alert('您没有可操作的菜单项,请与管理员联系!'); "); 

    finally 

     if (objConn.State.ToString().Equals ("Open")) objConn.Close(); 

      

  7.   

        private void populateTreeControl(XmlNode document, TreeNodeCollection nodes, int num)
        {        foreach (XmlNode node in document.ChildNodes)
            {
                intNum = num;
                //string text = (node.Value != null ? node.Value : (node.Attributes != null && node.Attributes.Count > 0) ? node.Attributes[0].Value : node.Name);
                //string value=(node.Attributes["key"]!=null)? node.Attributes["key"].Value.ToString():"";
                //TreeNode new_child = new TreeNode(text,value);            TreeNode new_child = new TreeNode();
                if (!bFlaseNode(node))
                {
                    XmlElement xe = (XmlElement)node;
                    xmlShowAndValue(new_child, xe, intNum);
                    //xmlShowAndValue(new_child, node, intNum);
                    nodes.Add(new_child);
                }            if (node.ChildNodes.Count != 0)
                    intNum++;            populateTreeControl(node, new_child.ChildNodes, intNum);            if (node.NextSibling == null)
                    intNum--;
            }
        }