C#将Xml文件中的节点递归加载到TreeView上

1.按钮的点击事件其中有XDocument与XmlDocument

 private void button1_Click(object sender, EventArgs e)
        {
            #region XDocument 将Xml递归加载到TreeView上

            ////1.读取Xml文件(XDocument)
            ////加载Xml文件
            //XDocument xdoc = XDocument.Load(@"D:\TEST\NewPerson.xml");
            ////先获取根元素
            //XElement rootEle = xdoc.Root;
            ////将根元素加载到TreeView的根节点上
            //TreeNode rootnode =  treeView1.Nodes.Add(rootEle.Name.ToString());

            ////递归加载根元素以下的子节点
            //LoadXmlTreeView(rootEle, rootnode.Nodes);

            #endregion



            #region Xmldocument将xml递归加载到TreeView上

            //1.加载文件到对象中
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(@"D:\TEST\NewPerson.xml");
            //获取xml的根元素
            XmlElement xmlrootele = xmldoc.DocumentElement;

            TreeNode rootNode = treeView1.Nodes.Add(xmlrootele.Name);

            LoadXmlToTreeView(xmlrootele, rootNode.Nodes);

            #endregion
        }

2.递归方法

private void LoadXmlToTreeView(XmlElement xmlrootele, TreeNodeCollection nodes)
        {
            //循环根元素的子元素

            foreach (XmlNode item in xmlrootele.ChildNodes)
            {
                //需要判断当前节点是什么类型
                if (item.NodeType == XmlNodeType.Element)
                {
                    //如果是元素节点就加载到TreeView上
                    TreeNode node = nodes.Add(item.Name);
                    LoadXmlToTreeView((XmlElement)item, node.Nodes);
                }
                else if (item.NodeType == XmlNodeType.Text || item.NodeType == XmlNodeType.CDATA)
                {
                    nodes.Add(item.InnerText);
                }
            }
        }

        //通过Xdocument的方式将xml递归加载到Treeview上
        private void LoadXmlTreeView(XElement rootEle, TreeNodeCollection nodes)
        {



            //获取根元素的所有子元素
            rootEle.Elements();
            //遍历根元素所有的子元素
            foreach (XElement item in rootEle.Elements())
            {
                if (item.Elements().Count() == 0)
                {
                    nodes.Add(item.Name.ToString()).Nodes.Add(item.Value.ToString());
                }
                else
                {
                    //当前子元素加载到TreeView的节点集合中
                    TreeNode node = nodes.Add(item.Name.ToString());
                    LoadXmlTreeView(item, node.Nodes);
                }
            }
        }
发布了60 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_24432127/article/details/82597937