打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
RSS阅读器制作之将TreeView数据导出为XML数据

//递归遍历节点内容,最关键的函数 private void parseNode(TreeNode tn) { IEnumerator ie = tn.Nodes.GetEnumerator(); while (ie.MoveNext()) { TreeNode ctn = (TreeNode) ie.Current; //为最底层节点,即该节点为RSS节点 if (ctn.GetNodeCount(true) == 0) { xmlLine = GetRSSText(ctn); sr.WriteLine(xmlLine); }

/*-------------------------------------------------------------
 * 作者:刘晓松
 * 版本:1.0.0
 * 日期:2006.10.29
 * 描述:将TreeView中导出为XML数据
-------------------------------------------------------------
*/

using System;
using System.Collections;
using System.IO;
using System.Windows.Forms;

namespace TreeViewExport
{
    
/// <summary>
   
/// 将TreeView中导出为XML数据
   
/// </summary>

   public class TreeViewToXmlB
   
{
        
//XML每行的内容
        private string xmlLine = "";
        
//用于写XML文件
        private StreamWriter sr;

        
/// <summary>
        
/// 构造函数
        
/// </summary>

        public TreeViewToXmlB()
        
{
            
        }


        
/// <summary>
        
/// 将TreeView中导出为XML数据
        
/// </summary>
        
/// <param name="tv">TreeView控件</param>
        
/// <param name="filename">XML文件的保存路径</param>

        public void exportToXml(TreeView tv, string filename) 
        
{
            sr 
= new StreamWriter(filename, false, System.Text.Encoding.UTF8);
            
//写文件头部内容
            
//下面是生成RSS的OPML文件
            sr.WriteLine("<?xml version="1.0" encoding="UTF-8"?>");
            sr.WriteLine(
"<opml version="1.0">");
            sr.WriteLine(
"<head>");
            sr.WriteLine(
"<title>RSS</title>");
            sr.WriteLine(
"</head>");
            sr.WriteLine(
"<body>");

            
//遍历根节点
            foreach (TreeNode node in tv.Nodes)
            
{
                
if (node.GetNodeCount(true== 0)
                
{
                    xmlLine 
= GetRSSText(node);
                }

                
else
                
{
                    xmlLine 
= GetDirectoryText(node);
                }


                sr.WriteLine(xmlLine);

                
//递归遍历节点
                parseNode(node);
            }


            
//写文件尾部内容
            sr.WriteLine("</body>");
            sr.WriteLine(
"</opml>");
            sr.Close();
        }


        
//递归遍历节点内容,最关键的函数
        private void parseNode(TreeNode tn) 
        
{
            IEnumerator ie 
= tn.Nodes.GetEnumerator();

            
while (ie.MoveNext()) 
            
{
                TreeNode ctn 
= (TreeNode) ie.Current;

                
//为最底层节点,即该节点为RSS节点
                if (ctn.GetNodeCount(true== 0)
                
{
                    xmlLine 
= GetRSSText(ctn);
                    sr.WriteLine(xmlLine);
                }

                
else//不是最底层节点,即该节点为目录节点
                {
                    xmlLine 
= GetDirectoryText(ctn);
                    sr.WriteLine(xmlLine);
                }


                
//如果还有子节点则继续遍历
                if (ctn.GetNodeCount(true> 0)
                
{
                    parseNode(ctn);
                }

            }


            sr.WriteLine(
"</outline>");
        }


        
//成生RSS节点的XML文本行
        private string GetRSSText(TreeNode node)
        
{
            
//根据Node属性生成XML文本
            string rssText = "<outline type="rss" text="" + node.Text + "" xmlUrl="URL"/>";

            
return rssText;
        }


        
//成生目录节点的XML文本行
        private string GetDirectoryText(TreeNode node)
        
{
            
//根据Node属性生成XML文本
            string directoryText = "<outline text="" + node.Text + "">";

            
return directoryText;
        }

   }

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[Winform] C#TreeView读取Xml,TreeView导出到Xml(附实现源码
C#生成无限级别菜单 treeview绑定数据库 实践成果
C# 多线程操作TreeView
ASP.NET TREEVIEW 使用方法(2) - yyf919 - 博客园
Asp.Net中使用TreeView连接数据库动态加载节点问题
C# 带checkbox的 TreeView处理父子节点选择
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服