数据库有数据表tbDept:

ID ParentID DeptName LevelID RoleID
1 0 软体研发处 0 0
2 1 软体研发一部 0 0
3 1 软体研发二部 0 0
4 1 软体研发三部 0 0
5 2 软体研发一部一课 0 0
6 2 软体研发一部二课 0 0
7 3 软体研发二部一课 0 0
8 3 软体研发二部一课 0 0
9 4 软体研发三部一课 0 0
10 4 软体研发三部二课 0 0
11 5 AAA 1 1
12 5 BBB 1 1
......

可以看出其中ID和ParentID是递归定义的,现在要生成如下形式的xml:

View Code

<root><node ID="1" ParentID="0" DeptName="软体研发处" LevelID="0" RoleID="0"><node ID="2" ParentID="1" DeptName="软体研发一部" LevelID="0" RoleID="0"><node ID="5" ParentID="2" DeptName="软体研发一部一课" LevelID="0" RoleID="0"><node ID="11" ParentID="5" DeptName="AAA" LevelID="1" RoleID="1" /><node ID="12" ParentID="5" DeptName="BBB" LevelID="1" RoleID="1" /></node><node ID="6" ParentID="2" DeptName="软体研发一部二课" LevelID="0" RoleID="0" /></node><node ID="3" ParentID="1" DeptName="软体研发二部" LevelID="0" RoleID="0"><node ID="7" ParentID="3" DeptName="软体研发二部一课" LevelID="0" RoleID="0" /><node ID="8" ParentID="3" DeptName="软体研发二部二课" LevelID="0" RoleID="0" /></node><node ID="4" ParentID="1" DeptName="软体研发三部" LevelID="0" RoleID="0"><node ID="9" ParentID="4" DeptName="软体研发三部一课" LevelID="0" RoleID="0" /><node ID="10" ParentID="4" DeptName="软体研发三部二课" LevelID="0" RoleID="0" /></node></node></root>

可以考虑先添加根元素root,然后用数据阅读器循环读取记录,每读一条就生成一个node元素,并将它添加到xml中指定元素的下面,做为其子元素。代码如下:

        XmlDocument xmlDoc = new XmlDocument();        XmlElement root = xmlDoc.CreateElement("root");        xmlDoc.AppendChild(root);        OleDbData md = new OleDbData();        md.ExecuteReader("select * from tbDept");while (md.Reader.Read())        {            XmlElement node = xmlDoc.CreateElement("node");for (int i = 0; i < md.Reader.FieldCount; i++)                node.SetAttribute(md.Reader.GetName(i), md.Reader[i].ToString());int parentID = Convert.ToInt32(md.Reader["ParentID"]);if (parentID > 0)                xmlDoc.SelectSingleNode(string.Format(@"//node[@ID='{0}']", parentID)).AppendChild(node);else                xmlDoc.DocumentElement.AppendChild(node);        }        md.Close();    xmlDoc.Save(Server.MapPath("~/test.xml"));

以上代码使用了自己的数据库操作类OleDbData,是数据库操作代码形式更简练,读者可改写成原生ADO.NET代码,难度不大。

转载于:https://www.cnblogs.com/dalmeeme/archive/2012/04/05/2433275.html

根据递归定义的数据表循环生成xml相关推荐

  1. 【csv文件转xml文件】Excel表格数据快速批量生成xml格式文件

    使用背景: 使用场景举例:数据集标签处理 有时候我们需要将固定格式的Excel表格文件(csv文件)转换为xml文件使用,例如我们在目标检测实验当中我们需要制作数据集Pascal VOC格式的标签文件 ...

  2. 如何将Excel数据导入到MS SQL Server已定义的数据表中

    1. 前提:已经在SQL Server中定义了所要导入数据的表(如stock,salvaging和out_stock三张表)的结构. 2. 如图,选择要导入数据的数据库(例如dlqx数据库),右键-& ...

  3. 【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )

    文章目录 一.使用 StreamingMarkupBuilder 生成 xml 数据 二.mkp.xmlDeclaration() 生成 xml 版本数据 三.完整代码示例 一.使用 Streamin ...

  4. Java案例:数据表转换成XML文档

    将数据表查询内容转换成XML文件,便于在网络上进行传输,具有一定的实用价值.   1.数据表(student) 2.数据库连接管理类 /*** 功能:获得数据库连接* 作者:华卫* 日期:2010年4 ...

  5. SQL Server打开数据表中的XML内容时报错的解决办法

    从SQL Server2005开始提供了一种新的数据类型XML type,它允许用户将数据以XML文件的格式直接存储到数据表中.结合在ASP.NET中使用Linq to Sql,我们可以非常方便地将X ...

  6. IDEA自定义Generate POJOs.groovy数据表批量生成实体类

    目录 1,idea连接mysql数据库 2,右键数据库表格,打开代码生成器规则文件地址 3,在文件夹下新建新建MyGenerate POJOs.groovy 4,自定义MyGenerate POJOs ...

  7. tpcc mysql下载_TPCC安装和压测数据库数据表创建生成

    下载TPCC-mysql [root@cnbugs1 ~]# git clone https://github.com/Percona-Lab/tpcc-mysql.git 配置TPCC-mysql ...

  8. 实训13 使用SQLyog创建数据库和数据表,生成E-R图——MySQL数据库

    EX13.1 新建一个数据库erp,并使用SQL代码创建两个表,一个商品类别表TYPE_T和一个商品表GOODS_T,表结构如下所示.生成对应的E-R图. 商品类别TYPE_T 字段名 类型 约束 说 ...

  9. python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?

    我需要在熊猫中创建一个函数,该函数将单个数据框作为输入,并根据特定条件返回多个数据框作为输出. (请检查下面的示例以了解情况).我很难弄清楚如何做.我需要一些专家的编码建议. 范例1: 输入= 100 ...

最新文章

  1. 一幅图弄清DFT与DTFT,DFS的关系
  2. php网站自动变暗,如何使用JS弹出DIV并使整个页面背景变暗
  3. element js 包含字符_selenium3.x(10)js弹框处理
  4. 管道过滤模式 大数据_大数据管道配方
  5. SpringMVC默认访问路径配置
  6. PHP批量查询数据库下载远程文件脚本实例
  7. C++_结构体指针_嵌套结构体_结构体做为函数参数_结构体值传递和指针传递---C++语言工作笔记026
  8. 素数和 mooc 翁恺
  9. 初步了解关于js跨域问题
  10. 计算机图形学(四)—— 实验四:种子填充算法
  11. Hyperledger Fabric教程(5)-- byfn.sh分析-docker-compose-base.yaml
  12. spark 两个rdd求交集,差集,并集
  13. 7. namp工具的基础了解
  14. Ribbon 界面介绍(1)
  15. 基于到达时间差(TDOA)的室内定位(/无线传感器网络定位)——极大似然估计ML
  16. 一种绘制有向图的方法<TSE93> - 1. 引言
  17. python识别图片背景中数字_用python识别一张数字图片
  18. Python爬取小姐姐美照
  19. [ Linux ] PCF8563数据手册解析 |CSDN创作打卡
  20. 组数(【问题描述】输入一行字符串(设字符数不大于80),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。)

热门文章

  1. #region的快捷键+++从一个页面中弹出一个新窗口,当新窗口关闭时刷新原窗口!...
  2. 一些Linux历史的小散
  3. java 正则 关键字_正则表达式关键字
  4. mysql 创建唯一索引_Mysql普通索引和唯一索引的选择分析
  5. Spring高级之注解@ComponentScan详解(超详细)
  6. 设计模式之单例模式介绍
  7. fedora 20 报错: Loaded plugins: langpacks, refresh-packagekit Error: Cannot retrieve metalink for...
  8. winfrom axacropdf预览pdf怎么一直显示_PDF合并怎么做?分享多个PDF文件合并的方法...
  9. oracle open_link,open_links_per_instance 和 open_links 参数说明
  10. 算法提高 陶陶摘苹果(java)