/// <summary>
        /// 从XML中读取数据到TreeView
       /// </summary>
       /// <param name="openXmlDlg">打开文件对话框</param>
       /// <param name="treeViewControl">某一层次的节点集合</param>
        public void ReadXmlToTreeView(OpenFileDialog openXmlDlg, TreeView treeViewControl)
        {
            openXmlDlg.DefaultExt = "xml";
            openXmlDlg.Filter = "XML Files (*.xml)|*.xml";
            openXmlDlg.FilterIndex = 1;
            if (openXmlDlg.ShowDialog() == DialogResult.OK)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(openXmlDlg.FileName);       //  装载XML文件
                treeViewControl.BeginUpdate();
                treeViewControl.Nodes.Clear();
                XmlNode node = xmlDoc.DocumentElement;  //  读取XML文件的根结点
                //  string tempText = (node.Value != null ? node.Value : (node.Attributes != null && node.Attributes.Count > 0) ? node.Attributes[5].Value : node.Name);
                string tempText = node.Name;
                TreeNode rootNode = new TreeNode(tempText);
                rootNode.Name = node.Name;
                treeViewControl.Nodes.Add(rootNode);    //  首先把根结点填入TreeView控件
                rootNode.ToolTipText = tempText;
                XmlNodeToTreeNode(xmlDoc.DocumentElement, rootNode.Nodes);  //  利用递归的方法读取XML所有节点并填入TreeView控件
                treeViewControl.EndUpdate();
            }
        }        /// <summary>
        /// 递归的方法读取XML所有节点并填入TreeView控件
        /// </summary>
        /// <param name="documentElement">xml文档中的单个节点</param>
        /// <param name="nodes">所有节点集合</param>
        public void XmlNodeToTreeNode(XmlNode documentElement, TreeNodeCollection nodes)
        {
            foreach (XmlNode node in documentElement.ChildNodes)
            {
                //string tempText = (node.Value != null ? node.Value : (node.Attributes != null && node.Attributes.Count > 0) ? node.Attributes[5].Value : node.Name);
                string tempText = node.Name;
                //创建一个树节点,参数tempText代表树节点的Text属性
                TreeNode newChild = new TreeNode(tempText);
                //为树节点的Name属性赋值
                newChild.Name = node.Name;
                newChild.ToolTipText = tempText;
                //添加树节点
                nodes.Add(newChild);
                XmlNodeToTreeNode(node, newChild.Nodes);
            }        }
上面是我写的代码,建议你主要看一下我注释调的语句
//string tempText = (node.Value != null ? node.Value : (node.Attributes != null && node.Attributes.Count > 0) ? node.Attributes[5].Value : node.Name);

解决方案 »

  1.   

    newtreeNode.Text = node.Name; 
    改成
    newtreeNode.Text = node.InnerText;    private void fillTree(XmlNodeList XmlNode, TreeNodeCollection treeNode)
        {
            foreach (XmlNode node in XmlNode)
            {
                if (node.NodeType != XmlNodeType.Element) continue;            TreeNode newtreeNode = new TreeNode();
                newtreeNode.Value = node.InnerText;
                try
                {
                    string a = "";
                    a = node.Attributes["Name"].Value + node.Attributes["Age"].Value + node.Attributes["Hobby"].Value;
                    newtreeNode.Target = a;
                }
                catch { newtreeNode.Target = ""; }
                if (node.HasChildNodes) fillTree(node.ChildNodes, newtreeNode.ChildNodes);            treeNode.Add(newtreeNode);
            }
        } 
      

  2.   

    Node.Name字段当然是属性名,
    你可以试试Node.text字段嘛……这个问题……
      

  3.   

    XML是个很简单的两层结构嘛,用不着那么复杂:
                tvMain.Nodes.Clear(); 
                //读取Xml文件 
                  XmlDocument myXml = new XmlDocument(); 
                myXml.Load("Student.Xml");             XmlNodeList list = doc.GetElementsByTagName("Student");
                foreach (XmlNode node in list)
                {
                    if (node.NodeType != XmlNodeType.Element) continue;                TreeNode newtreeNode = new TreeNode();
                    newtreeNode.Text = node.InnerText;
                    treeView1.Nodes.Add(newtreeNode);
                }
    还有LZ要注意了:XML文件是区分大小写的!象LZ给出的XML文件中,张靓和周杰的Student大小写不一致,不知道是不是LZ的笔误,反正如果不一致的话GetElementsByTagName是取不出来的