//使用范例:
TreeViewToXmlB m_TreeViewToXmlB = new TreeViewToXmlB();
 m_TreeViewToXmlB.exportToXml(this.TreeView1,Server.MapPath(@".\xml.xml"));

====================================================

using System;
using Microsoft.Web.UI.WebControls;
using System.Collections;
using System.IO;
//using System.Windows.Forms;

namespace treeview_DB
{
 /// <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.Nodes.Count == 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.Nodes.Count == 0)
    {
     xmlLine = GetRSSText(ctn);
     sr.WriteLine(xmlLine);
    }
    else//不是最底层节点,即该节点为目录节点
    {
     xmlLine = GetDirectoryText(ctn);
     sr.WriteLine(xmlLine);
    }

//如果还有子节点则继续遍历
    if (ctn.Nodes.Count > 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;
  }
 }
}

转载于:https://www.cnblogs.com/RobotTech/archive/2007/01/15/621096.html

将TreeView中导出为XML数据相关推荐

  1. WPF:使用Json.NET在TreeView中树形显示JSON数据

    原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...

  2. discuz数据从godaddy主机中导出的mysql数据乱码变问号???的解决方法

    从godaddy主机导出的mysql数据安装在本地电脑上发现原来的中文都变成了问号?godaddy主机中的数据库版本是5.0.67,charset=utf8 collation=utf8_genera ...

  3. jdk 中常用的 xml 数据解析

    xml(extensible markup language) 是一种可扩展标记语言,允许用户自定义复杂的数据结构,json(javascript object notation),可以认为是 JS ...

  4. mysql数据导入导出 CSV格式_MySQL中导入导出CSV格式数据

    原标题:MySQL中导入导出CSV格式数据 预备阅读:MySQL中的主键问题和赋权限问题 今天来讲一下在MySQL中导入和导出CSV格式数据的操作. CSV格式数据 逗号分隔值(Comma-Separ ...

  5. ASP.NET - 演练:创建网页以显示 XML 数据

    数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件 ...

  6. xquery_使用XQuery查询DB2 XML数据

    xquery 您可能已经听到有关DB2 V9的嗡嗡声,DB2 V9是IBM第一个同时支持表格(基于SQL)和分层(基于XML)数据结构的数据库管理系统. 该系列的前几篇文章总结了DB2的新XML功能, ...

  7. 从MySql 数据库中导出数据并生成指定格式xml文件

    最近网站需要做数据迁移,需要我将网站的数据从mysql数据库中导出,并按照要求生成指定格式的xml文件. xml格式要求: 代码: package com.epsoft.gjjisp;import j ...

  8. 手把手教你如何用Python从PDF文件中导出数据(附链接)

    作者:Mike Driscoll :翻译:季洋:校对:丁楠雅 本文约4000字,建议阅读10分钟. 本文介绍了在提取出想要的数据之后,如何将数据导出成其他格式的方法. 有很多时候你会想用Python从 ...

  9. mysql xml_如何在MySQL数据库中使用XML数据

    [IT168 技术文档]通过XML使系统之间的数据交换变得更简单,因为它与编程语言无关,刚引入XML的概念时,是通过一个脚本或应用程序解析XML数据,将其转换为适合于数据库和底层系统的有效格式,后来, ...

最新文章

  1. RDKit | 基于Fraggle算法评估化合物的相似性
  2. Apache与IIS的优劣对比点点评
  3. myeclipse转maven项目
  4. PHP排序算法的复习和总结
  5. 模板:回文自动机(PAM)
  6. c语言随机迷宫生成器,作为新手该如何快速上手 C++
  7. 用sklearn mysql_Sklearn之Linear Regression
  8. c++ array stl_C ++ STL中带有示例的array :: front()函数
  9. 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步
  10. django得到Model的全部字段名(field)
  11. python--函数式登录程序
  12. 机械革命bios升级_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年
  13. 如何向打游戏一样学习?(摘自大佬,如有冒犯,请多包涵)
  14. 使用axis调用WebService,Java WebService调用工具类
  15. 图片服务器-存储图片技巧
  16. DNA测序技术发展史:一代、二代、三代测序技术简要原理及比较
  17. SOFA Weekly | QA 整理
  18. Vulkan 基本原理
  19. 基于javaweb+jsp的晚会抽奖系统(java+Jdbc+Servlet+Ajax+mysql)
  20. 某某桥的检测和加固设计

热门文章

  1. Log4j2使用总结
  2. ERP框架开发中的License许可验证机制设计与实现 (包含源代码下载)
  3. ORCALE数据库内年份运算
  4. 自定义Login注解
  5. 我的第一款 Drone 插件
  6. golang channel的一些总结
  7. 自动化运维环境搭建过程
  8. Redis分布锁原理简介和实现过程
  9. Git常见指令的本质
  10. 使用jps来查看虚拟机状态