科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件RSS阅读器制作之将TreeView数据导出为XML数据

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

//递归遍历节点内容,最关键的函数.

作者:Anckly 来源: CSDN 2008年3月27日

关键字: 数据 TreeView RSS Web开发 软件

  • 评论
  • 分享微博
  • 分享邮件
/*-------------------------------------------------------------
 * 作者:刘晓松
 * 版本: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;
        }

   }

}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章