C#中xml写入treeview,treeview写入xml

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Windows.Forms;  
using System.Xml;  
 
 
namespace treeview2   //你的项目名
{  
    class TreeExXMLCls  
    {  
        private TreeView thetreeview;  
        private string xmlfilepath;  
        XmlTextWriter textWriter;  
        XmlNode Xmlroot;  
        XmlDocument textdoc;  
 
        public TreeExXMLCls()  
        {  
            //----构造函数  
            textdoc = new XmlDocument();  
 
        }  
 
        ~TreeExXMLCls()  
        {  
            //----析构函数  
        } 
 
        #region 遍历treeview并实现向XML的转化  
        /// <summary>     
        /// 遍历treeview并实现向XML的转化  
        /// </summary>     
        /// <param name="TheTreeView">树控件对象</param>     
        /// <param name="XMLFilePath">XML输出路径</param>     
        /// <returns>0表示函数顺利执行</returns>     
 
        public int TreeToXML(TreeView TheTreeView, string XMLFilePath)  
        {  
            //-------初始化转换环境变量  
            thetreeview = TheTreeView;  
            xmlfilepath = XMLFilePath;  
            textWriter = new XmlTextWriter(xmlfilepath, null);  
 
            //-------创建XML写操作对象  
            textWriter.Formatting = Formatting.Indented;  
 
            //-------开始写过程,调用WriteStartDocument方法  
            textWriter.WriteStartDocument();  
 
            //-------写入说明  
            textWriter.WriteComment("this XML is created from a tree");   
            
            //-------添加第一个根节点  
            textWriter.WriteStartElement("TreeExXMLCls");  
            textWriter.WriteEndElement();  
 
            //------ 写文档结束,调用WriteEndDocument方法  
            textWriter.WriteEndDocument();  
 
            //-----关闭输入流  
            textWriter.Close();  
 
            //-------创建XMLDocument对象  
            textdoc.Load(xmlfilepath);  
 
            //------选中根节点  
            XmlElement Xmlnode=textdoc.CreateElement(thetreeview.Nodes[0].Text);  
            Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls");  
 
            //------遍历原treeview控件,并生成相应的XML  
            TransTreeSav(thetreeview.Nodes, (XmlElement)Xmlroot);  
            return 0;  
        }  
 
        private int TransTreeSav(TreeNodeCollection nodes, XmlElement ParXmlnode)   
        {  
 
            //-------遍历树的各个故障节点,同时添加节点至XML  
            XmlElement xmlnode;  
            Xmlroot = textdoc.SelectSingleNode("TreeExXMLCls");  
 
            foreach (TreeNode node in nodes)  
            {  
                xmlnode = textdoc.CreateElement(node.Text);  
                ParXmlnode.AppendChild(xmlnode);  
 
                if (node.Nodes.Count > 0)  
                {  
                    TransTreeSav(node.Nodes, xmlnode);  
                }  
            }  
            textdoc.Save(xmlfilepath);  
            return 0;  
        } 
 
        #endregion 
 
        #region 遍历XML并实现向tree的转化  
        /// <summary>     
        /// 遍历treeview并实现向XML的转化  
        /// </summary>     
        /// <param name="XMLFilePath">XML输出路径</param>     
        /// <param name="TheTreeView">树控件对象</param>     
        /// <returns>0表示函数顺利执行</returns>     
 
        public int XMLToTree(string XMLFilePath,TreeView TheTreeView)  
        {  
            //-------重新初始化转换环境变量  
            thetreeview = TheTreeView;
            xmlfilepath = XMLFilePath;  
 
            //-------重新对XMLDocument对象赋值  
            textdoc.Load(xmlfilepath);

            XmlNode root = textdoc.SelectSingleNode("Authors_Table");//读的xml的节点名
              
            foreach (XmlNode subXmlnod in root.ChildNodes)  
            {  
                TreeNode trerotnod = new TreeNode();  
                trerotnod.Text = subXmlnod.Name;  
                thetreeview.Nodes.Add(trerotnod);  
                TransXML(subXmlnod.ChildNodes, trerotnod);  
   
            }  
            return 0;  
        }  
 
        private int TransXML(XmlNodeList Xmlnodes,TreeNode partrenod)  
        {  
            //------遍历XML中的所有节点,仿照treeview节点遍历函数  
            foreach (XmlNode xmlnod in Xmlnodes)  
            {  
                TreeNode subtrnod = new TreeNode();  
                subtrnod.Text = xmlnod.Name+xmlnod.value;  
                partrenod.Nodes.Add(subtrnod);  
 
                if (xmlnod.ChildNodes.Count > 0)  
                {  
                    TransXML(xmlnod.ChildNodes, subtrnod);  
                }  
            }  
            return 0;  
        } 
        #endregion  
    }  

 

上面是新建了个类。写完后要调用类方法

 private void button1_Click(object sender, EventArgs e)
        {
            TreeExXMLCls a = new TreeExXMLCls();
            a.XMLToTree("D://实验室//匡老师项目//wxample2.xml",treeView1);
        }

按钮单击事件激活方法。就可以把节点显示到treeview里了。

最后祝大家愉快

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值