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

推荐订阅源

MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
爱范儿
爱范儿
小众软件
小众软件
K
Kaspersky official blog
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
C
Check Point Blog
S
Schneier on Security
P
Palo Alto Networks Blog
IT之家
IT之家
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Project Zero
Project Zero
Y
Y Combinator Blog
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
S
Securelist
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理

博客园 - 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);
            }
        }
    }