C#递归生成HTML树,C#递归生成xml树
C#递归生成HTML树
public StringBuilder str = new StringBuilder(); //定义一个字符串
private void get_navigation_childs(List<TableClass> oldData, string parent_id)
{
List<TableClass> dr = oldData.Where(x => x.PCode == parent_id).OrderBy(x => x.Kid).ToList(); //Code代表节点信息,PCode代表父级节点信息,PMMC代表节点名称
bool isWrite = false; //是否输出开始标签
for (int i = ; i < dr.Count(); i++)
{
//如果是顶级导航
if (parent_id == "")
{
str.Append("<ul>");
str.Append("<li class='parent_li' >"); str.Append("<span title='Collapse this branch'>");
str.Append("<i class='icon-folder-open'></i>" + dr[i].PMMC + "</span> ");
//str.Append("<a href='RoleListEdit.aspx?id=" + dr[i].ID + "&type=Edit'>编辑</a> \n");
//str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >删除</a> \n");
//调用自身迭代
this.get_navigation_childs(oldData, dr[i].Code);
str.Append("</ul>"); }
else //下级导航
{
if (!isWrite)
{
isWrite = true;
str.Append("<ul>");
}
str.Append("<li>");
str.Append(" <span><i class='icon-leaf'></i>" + dr[i].PMMC + "</span>");
//str.Append("<a href='RoleListEdit.aspx?id=" + dr[i].ID + "&type=Edit'>编辑</a> \n");
//str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >删除</a> \n");
//调用自身迭代
this.get_navigation_childs(oldData, dr[i].Code);
str.Append("</li>");
if (i == (dr.Count() - ))
{
str.Append("</ul>");
}
}
}
}
C#递归生成XML树
public void TestBuild(string Path)
{
DataTable dt = InitTable();
XmlElement xe = xd.CreateElement("Datas");
xd.AppendChild(xe);
//执行递归,添加XML节点
BTest(dt, xe);
XmlDocument doc = new XmlDocument();
doc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + xd.OuterXml.ToString().Replace("/>", "></Item>"));
doc.Save(Path);
}
/// <summary>
/// 递归添加XML节点
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="node">当前节点</param>
public void BTest(DataTable dt, XmlElement node)
{
XmlElement tmp; var list = from r in dt.AsEnumerable()
select r;
if (node != null && node.Attributes["Code"] != null)
{
list = from r in dt.AsEnumerable()
where r["PCode"].ToString().Equals(node.Attributes["Code"].Value)
select r;
} foreach (DataRow row in list)
{
if (!usedElement.Contains(row["Code"].ToString()))
{
usedElement.Add(row["Code"].ToString());
tmp = xd.CreateElement("Item"); var a = tmp.NodeType; tmp.SetAttribute("Code", row["Code"].ToString());
tmp.SetAttribute("PCode", row["PCode"].ToString());
//tmp.InnerText = row["PMMC"].ToString(); node.AppendChild(tmp); BTest(dt, tmp);
}
}
}
C#递归生成HTML树,C#递归生成xml树的更多相关文章
- A1135 | 红黑树判断:审题、根据“先序遍历”和“BST树”的条件生成后序遍历、递归判断
对A1135这题有心里阴影了,今天终于拿下AC.学习自柳神博客:https://www.liuchuo.net/archives/4099 首先读题很关键: There is a kind of ba ...
- CodeSmith 二、多模板按目录树批量自动生成代码
通过调用指定目录下的所有模板,逐一按照数据表生成独立的代码文件.支持多模板调用.支持所有数据表生成或批量指定多个生成.支持自动的文件目录结构.支持代码文件格式化命名等. 背景:最近一个新项目一高兴选了 ...
- UVa 297 Quadtrees(树的递归)
Quadtrees 四分树就是一颗一个结点只有4个儿子或者没有儿子的树 [题目链接]UVa 297 Quadtrees [题目类型]树的递归 &题意: 一个图片,像素是32*32,给你两个先序 ...
- ALGO-27_蓝桥杯_算法训练_FBI树(树,递归)
问题描述 我们可以把由“”和“”组成的字符串分为三类:全“”串称为B串,全“”串称为I串,既含“”又含“”的串则称为F串. FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种.由一个长 ...
- C# 表达式树 创建、生成、使用、lambda转成表达式树~表达式树的知识详解
笔者最近学了表达式树这一部分内容,为了加深理解,写文章巩固知识,如有错误,请评论指出~ 表达式树的概念 表达式树的创建有 Lambda法 和 组装法. 学习表达式树需要 委托.Lambda.Func& ...
- 树、递归、广度优先搜索(BFS)————二叉树的最小深度
解法一:递归 遇到叶子节点不递归,否则接着往子树递归,每次递归层数加1 要确定的是,一定要保证初始输入的节点是有子节点的.因为可能出现只有单子树的情况,所以要先确认这种情况. 具体过程: 1.分析初始 ...
- UVa 839 -- Not so Mobile(树的递归输入)
UVa 839 Not so Mobile(树的递归输入) 判断一个树状天平是否平衡,每个测试样例每行4个数 wl,dl,wr,dr,当wl*dl=wr*dr时,视为这个天平平衡,当wl或wr等于0是 ...
- SQL Server中CTE的另一种递归方式-从底层向上递归
SQL Server中的公共表表达式(Common Table Expression,CTE)提供了一种便利的方式使得我们进行递归查询.所谓递归查询方便对某个表进行不断的递归从而更加容易的获得 ...
- hibernate 联合主键生成机制(组合主键XML配置方式)
hibernate 联合主键生成机制(组合主键XML配置方式) 如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...
随机推荐
- 从码云上下载react项目并配置成可运行状态
(第一次写,如有不足之处,欢迎指出) 一.下载项目: 1.首先保证安装了git, 2.然后在本地想要存放项目位置打开git(Git Bash Here),再复制码云中如图所示的地址: 3.在git中输 ...
- 安装并激活pycharm
进入 pycharm官网 https://www.jetbrains.com/pycharm/ 或直接百度pycharm进入官网 点击download now 下载专业版: 点击保存文件: 双击 py ...
- 在Javascript中闭包(Closure)
在Javascript中闭包(Closure) 什么是闭包 “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. ...
- idea打开dashboard
1.编辑workspace.xml文件,搜索 “RunDashboard” 节点 2.在component节点下增加option <option name="configuration ...
- 2.go的变量和常量
go的变量和常量 GO的变量: 变量的声明: 先对变量进行声明,在对其赋值 var variableName type variableName = typeValue var number int ...
- cpp实验二
1.函数重载编程练习 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型 数据,调用测试. #include<iostream& ...
- Demystify Git
Git虽然很时髦,但是不好学,不好用. 关键是不好理解. 本文用最通俗易懂又直观的方式,帮助大家理解git, git的内部组织, 基本概念,还有常用 的工作流程. 本文来自墙外. 习某某说:" ...
- JIT(Just in time,即时编译,边运行边编译)、AOT(Ahead Of Time,运行前编译),是两种程序的编译方式
JIT(Just in time,即时编译,边运行边编译).AOT(Ahead Of Time,运行前编译),是两种程序的编译方式
- javascript中的立即执行函数的原理
形如 ((function Test(a) { //code here... })('Hello')); 被称作立即执行函数. 首先需要了解的是,这并不是一种hack,这是javascript的基本语 ...
- py-day3-6 python map函数
map函数 :处理序列中的每个元素,得到的结果是一个列表,该列表元素个数及位置与原来一样 ## 求列表里元素的平方 (原始方法) num_1=[1,2,13,5,8,9] res =[] for i ...