zoukankan      html  css  js  c++  java
  • 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里了。

  • 相关阅读:
    http请求的GET和POST请求:查询和新增(server.php)
    http请求的GET和POST请求:查询和新增(ajax)
    shell中$(( )) 与 $( ) 还有${ }的区别
    linux查看操作系统版本信息
    Linux useradd 与 adduser的区别, /sbin/nologin 与 /bin/bash
    红帽触摸屏屏幕180旋转
    Sed命令n,N,d,D,p,P,h,H,g,G,x解析3
    sed命令
    sed高级用法:模式空间(pattern space)和保持空间(hold space)
    sed的模式空间和保持空间
  • 原文地址:https://www.cnblogs.com/zhongwh/p/2010920.html
Copyright © 2011-2022 走看看