easyui及读取xml

时间:2022-02-27 23:04:36

本地测试地址例如http://localhost:6541/TreeExam/AuthorityTree

TreeExam 是TreeExamController

AuthorityTree是TreeExamController内的AuthorityTree()方法

InitTree()方法未读取xml

InitTree2()和InitTree3()两种方法读取xml

----------------------Views---------AuthorityTree.cshtml------------------------------

@{

Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>AuthorityTree</title>
@*下载easyui 包 引入*@
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/themes/default/easyui.css")" />
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/themes/icon.css")" />
<script src="@Url.Content("~/Content/Jquery.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/jquery.easyui.min.1.2.2.js")"></script>
<script type="text/javascript">
$(function () {
$('#authorityTbl').treegrid({
title: '权限列表',
iconCls: 'icon-save',
width: $(document).width() * 0.80,
height: 500,
nowrap: false,
animate: true,
collapsible: true,
loadMsg: "数据加载中,请稍后...",
fitColumns: true,
url: '@Url.Content("~/TreeExam/InitTree3")',@*InitTree,InitTree2,InitTree3分别是三种方式实现easyui*@
idField: 'AuthorityID',
treeField: 'AuthorityName',
columns: [[
{ field: 'AuthorityID', title: '权限id', width: 200 },
{ field: 'AuthorityName', title: '权限名称', width: 300 },
{ field: 'Remark', title: '备注', width: 200 },
{ field: 'ParentID', title: '父级', width: 200 }
]],
toolbar: [{
text: '',
iconCls: 'icon-add',
handler: function () {

}
}, '-',
{
text:'',
iconCls:'icon-edit',
handler:function(){

}
}, '-',
{
text: '',
iconCls: 'icon-remove',
handler: function () {

}
}, '-'],
onLoadSuccess: function () {
$('#authorityTbl').treegrid('collapseAll');
}
})
})
</script>
</head>
<body>
<div id="listDiv">
<table id="authorityTbl" toolbar="#searchbar" class="easyui-treegrid" tbl="list">
</table>
</div>
</body>
</html>

----------------------Controller---------TreeExamController.cs--------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Collections;
using System.Xml;
using System.Data;

namespace MvcStudy3.Controllers
{
public class TreeExamController : Controller
{

//[HttpGet]
public ActionResult AuthorityTree()
{
return View();
}

#region InitTree()
public string InitTree()
{
string result = "";
IList<Authority> list = GetAuthorityList("",4);

foreach (Authority node in list)
{
result += Recursion(node) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

// 递归树形
public string Recursion(Authority model)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list = GetAuthorityList(model.AuthorityID, 3);
if (list != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion2(list[i]);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public string Recursion2(Authority model)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";
res_s += "}";
return res_s;
}

public IList<Authority> GetAuthorityList(string pid, int c)
{
IList<Authority> list = new List<Authority>();
for (int i = 0; i < c; i++)
{
list.Add(getAuthority(pid, i));
}
return list;
}

/// <summary>
///
/// </summary>
/// <param name="pid">父目录id</param>
/// <param name="c">需要的个数</param>
/// <returns></returns>
public Authority getAuthority(string pid,int i)
{
Authority a = new Authority();
if (string.IsNullOrEmpty(pid))
{
a.AuthorityID = i.ToString();
a.AuthorityName = i+"name";
a.AuthorityPath = i+"authoritypath";
a.IconPath = i+"iconpath";
a.ParentID = "0";
a.Remark = i+"remark";
}
else
{
a.AuthorityID = pid+""+i;
a.AuthorityName = pid+""+i+"name";
a.AuthorityPath = pid + "" + i + "authoritypath";
a.IconPath = pid + "" + i + "iconpath";
a.ParentID = pid;
a.Remark = pid + "" + i + "remark";
}
return a;
}
#endregion
#region InitTree2()
public string InitTree2()
{
string result = "";
IList<Authority> list = getXml();
IList<Authority> ll = getSelectList(list,"0");
foreach (Authority node in ll)
{
result += Recursion1(node,list) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

// 递归树形
public string Recursion1(Authority model,IList<Authority> list)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list2 = getSelectList(list,model.AuthorityID);
if (list2 != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list2.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion1(list2[i],list);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public IList<Authority> getSelectList(IList<Authority> list,string pid)
{
IList<Authority> ll =list.Where(p => p.ParentID == pid).ToList<Authority>();//用Where可以筛选list内容,Select不能筛选
return ll;
}

public IList<Authority> getXml()
{
IList<Authority> list = new List<Authority>();
XmlNode node;
XmlDocument xd = new XmlDocument();//定义一个xmldocument对象
string xmlpath = Server.MapPath("~/Files/XMLFile1.xml");//加载xml文件
xd.Load(@xmlpath);
XmlElement tree = xd.DocumentElement;
for (int i = 0; i < tree.ChildNodes.Count; i++)//对根子节点的所有子节点进行循环
{
node = tree.ChildNodes[i];

if (node.HasChildNodes)
{
XmlNode childnode = node.ChildNodes[0];
getAuthority(childnode,node,list);
}
}
return list;
}

public IList<Authority> getAuthority(XmlNode childnode, XmlNode node, IList<Authority> list)
{
Authority a = new Authority();
a.AuthorityID = childnode.InnerText;
childnode = node.ChildNodes[1];
a.AuthorityName = childnode.InnerText;
childnode = node.ChildNodes[3];
a.ParentID = childnode.InnerText;
childnode = node.ChildNodes[5];
a.Remark = childnode.InnerText;
if (node.ChildNodes.Count > 6)
{
childnode = node.ChildNodes[6];
if (childnode.HasChildNodes)
{
XmlNode childn = childnode.ChildNodes[0];
getAuthority(childn, childnode, list);
}
}
list.Add(a);
return list;
}
#endregion

#region 读取xml ds.ReadXml(xmlpath);
public string InitTree3()
{
string result = "";
DataSet ds = new DataSet();
string xmlpath = Server.MapPath("~/Files/XMLFile1.xml");//xml文件的相对位置
ds.ReadXml(xmlpath);
IList<Authority> list = getXml3(ds);

foreach (Authority node in list)
{
result += Recursion3(node,ds,1) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

public IList<Authority> getXml3(DataSet ds)
{
IList<Authority> list = new List<Authority>();
DataTable dt = ds.Tables[0];//获取第一级的节点内容
foreach (DataRow dr in dt.Rows)
{
Authority a = new Authority();
a.AuthorityID = dr["AuthorityID"].ToString();
a.AuthorityName = dr["AuthorityName"].ToString();
a.ParentID=dr["ParentID"].ToString();
a.Remark = dr["Remark"].ToString();
list.Add(a);
}
return list;
}
// 递归树形
public string Recursion3(Authority model,DataSet ds,int count)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list = GetAuthorityList(model.AuthorityID, ds,count);
if (list != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion3(list[i],ds,count+1);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public IList<Authority> GetAuthorityList(string aid,DataSet ds,int count)
{
IList<Authority> list = new List<Authority>();
if (ds.Tables.Count > count)
{
DataTable dt = ds.Tables[count];
DataRow[] drlist = dt.Select(string.Format("ParentID='{0}'", aid));
foreach (DataRow dr in drlist)
{
Authority a = new Authority();
a.AuthorityID = dr["AuthorityID"].ToString();
a.AuthorityName = dr["AuthorityName"].ToString();
a.ParentID = dr["ParentID"].ToString();
a.Remark = dr["Remark"].ToString();
list.Add(a);
}
return list;
}
else
{
return null;
}
}
#endregion
}

public class Authority
{
public string AuthorityID { get; set; }
public string AuthorityName { get; set; }
public string IconPath { get; set; }
public string ParentID { get; set; }
public string AuthorityPath { get; set; }
public string Remark { get; set; }
}
}

----------------XMLFile1.xml 文件----------------------------------------------

红色部分是节点名称,可以随便命名

<?xml version="1.0" encoding="utf-8" ?>
<authority>
<a>
<AuthorityID>1</AuthorityID>
<AuthorityName>1name</AuthorityName>
<IconPath>1iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>1authoritypath</AuthorityPath>
<Remark>1remak</Remark>
<b>
<AuthorityID>11</AuthorityID>
<AuthorityName>11name</AuthorityName>
<IconPath>11iconpath</IconPath>
<ParentID>1</ParentID>
<AuthorityPath>11authoritypath</AuthorityPath>
<Remark>11remak</Remark>
<c>
<AuthorityID>111</AuthorityID>
<AuthorityName>111name</AuthorityName>
<IconPath>111iconpath</IconPath>
<ParentID>11</ParentID>
<AuthorityPath>111authoritypath</AuthorityPath>
<Remark>111remak</Remark>
</c>
</b>
</a>
<a>
<AuthorityID>2</AuthorityID>
<AuthorityName>2name</AuthorityName>
<IconPath>2iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>2authoritypath</AuthorityPath>
<Remark>2remak</Remark>
<b>
<AuthorityID>21</AuthorityID>
<AuthorityName>21name</AuthorityName>
<IconPath>21iconpath</IconPath>
<ParentID>2</ParentID>
<AuthorityPath>21authoritypath</AuthorityPath>
<Remark>21remak</Remark>
</b>
</a>
<a>
<AuthorityID>3</AuthorityID>
<AuthorityName>3name</AuthorityName>
<IconPath>3iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>3authoritypath</AuthorityPath>
<Remark>3remak</Remark>
<b>
<AuthorityID>31</AuthorityID>
<AuthorityName>31name</AuthorityName>
<IconPath>31iconpath</IconPath>
<ParentID>3</ParentID>
<AuthorityPath>31authoritypath</AuthorityPath>
<Remark>31remak</Remark>
</b>
</a>
</authority>

easyui及读取xml的更多相关文章

  1. 读取xml数据装配到字典中之应用场景

    前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去 ...

  2. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  3. MFC如何读取XML

    <?xml version="1.0" encoding="utf-8"?> <Cases> <case> <No&g ...

  4. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

  5. java DOM4J 读取XML

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.ut ...

  6. C&num;中常用的读取xml的几种方法&lpar;转&rpar;

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  7. wcf序列化大对象时报错:读取 XML 数据时,超出最大

    错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...

  8. C&num;中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  9. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

随机推荐

  1. 从零开始学 Java - Windows 下安装 Eclipse

    三观是什么鬼 当我们在讨论「三观一致」的时候是在讨论些什么? 我认为这个世界上本没有「三观」这一说法,说的人多了,也就有了「三观」这个词,当我们讨论「三观一致」其实并不是真的在说世界观.价值观.人生观 ...

  2. DevExpress &period;NET界面开发示例大全

    说到做.net界面开发,很多人应该都会想到DevExpress. 它的 .net界面开发系列一共有7个版本:WinForms.ASP.NET.MVC.WPF.Silverlight.Windows 8 ...

  3. OpenvSwitch架构

    Openvswitch的架构 数据库结构和OVS-VSCTL # ps aux | grep openvswitch root      1117  0.0  0.0  21200  1580 ?   ...

  4. MyBatis学习 之 四、MyBatis配置文件

    目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...

  5. Cadence原理图与Allegro交互

    1:激活orCAD与Allegro的交互程序 打开原理图,Options->Preference在Miscellaneous里勾选 2:打开用到的工程 原理图,还有Allegro PCB Des ...

  6. 如何用C&num;把Doc文档转换成rtf格式

    先在项目引用里添加上对Microsoft Word 9.0 object library的引用 using System; namespace DocConvert { class DoctoRtf ...

  7. Variation of e&period;touches&comma; e&period;targetTouches and e&period;changedTouches

    We have the following lists: touches: A list of information for every finger currently touching the ...

  8. 前端为什么非要动静分离 说一下CDN托管的意义

    大型Web应用对速度的追求并没有止步于仅仅利用浏览器缓存,因为浏览器缓存始终只是为了提升二次访问的速度,对于首次访问的加速,我们需要从网络层面进行优化,最常见的手段就是CDN(Content Deli ...

  9. netstat命令总结

    nestat介绍 netstat是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字. 使用 ...

  10. Mysql DataPacketTooBigException异常处理

    在本地上运行好好,然后发布到服务器上去, 总是报错,后来查了一下日志,得到了如下的错误日志: [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] Pa ...