惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
The Cloudflare Blog
I
InfoQ
美团技术团队
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
L
LangChain Blog
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog

博客园 - adi

C# new用法总结 PictureBox TreeView ADD DEL - adi xml节点删除修改 子页面关闭时刷新父页面 javascript + asp.net - adi ASP.NET 弹出对话框和页面之间传递值的经验总结 Oracle 9.2下的“System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater” Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! sql游标 分组合并 No relevant source lines 关于Ajax 错误:'sys'未定义解决方法. 未能加载文件或程序集 system.web.extensions解决方法 要求使用 IIS 6.0 动态内容时 " HTTP 错误 404 - 文件或目录找 " 错误信息 VB.net与Media Player9.0嵌入式开发 企业中的Windows Media Services 流媒体 http://www.cnblogs.com/hmmcsdd/archive/2007/10/11/windowsmediasdjieshao.html 解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题 3法
TreeView2Xml - adi - 博客园
adi · 2008-09-10 · via 博客园 - adi

class TreeView2Xml
    {
        private const string _SubFolder = "Xml";
        private const string _DecodeConfigName = "TreeView.xml";

        public static void Save(TreeView tv  )
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml("<Menu></Menu>");
                XmlNode root = doc.DocumentElement;
                doc.InsertBefore(doc.CreateXmlDeclaration("1.0", "utf-8", "yes"), root);
                TreeNode2Xml(tv.Nodes, root);
                doc.Save(CommonString.BuildFullPathName(_SubFolder, _DecodeConfigName));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public static void TreeNode2Xml(TreeNodeCollection treeNodes, XmlNode xmlNode)
        {
            XmlDocument doc = xmlNode.OwnerDocument;
            foreach (TreeNode treeNode in treeNodes)
            {
                XmlNode element = doc.CreateNode("element", "Item", "");
                XmlAttribute attr = doc.CreateAttribute("Title");
                attr.Value = treeNode.Text;
                element.Attributes.Append(attr);
                attr = doc.CreateAttribute("id");
                attr.Value = treeNode.Name;
                element.Attributes.Append(attr);
                //element.AppendChild(doc.CreateCDataSection(treeNode.Tag.ToString()));
                xmlNode.AppendChild(element);

                if (treeNode.Nodes.Count > 0)
                {
                    TreeNode2Xml(treeNode.Nodes, element);
                }
            }
        }
        public static void Read(TreeView tv)
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(CommonString.BuildFullPathName(_SubFolder, _DecodeConfigName));

                XmlNodeList xmlNodes = xmlDoc.DocumentElement.ChildNodes;

                tv.BeginUpdate();
                tv.Nodes.Clear();
                XmlNode2TreeNode(xmlNodes, tv.Nodes);
                tv.EndUpdate();
            }
            catch(Exception e)
            {
                throw e;
            }
        }
        public static void XmlNode2TreeNode(XmlNodeList xmlNode, TreeNodeCollection treeNode)
        {
            foreach (XmlNode var in xmlNode)
            {
                if (var.NodeType != XmlNodeType.Element)
                {
                    continue;
                }
                TreeNode newTreeNode = new TreeNode();
                newTreeNode.Text = var.Attributes["Title"].Value;
                newTreeNode.Name = var.Attributes["id"].Value;
                if (var.HasChildNodes)
                {
                    //if (var.ChildNodes[0].NodeType == XmlNodeType.CDATA)
                    //{
                    //    newTreeNode.Tag = var.ChildNodes[0].Value;
                    //}

                    XmlNode2TreeNode(var.ChildNodes, newTreeNode.Nodes);
                }
                treeNode.Add(newTreeNode);
            }
        }
    }