原创:ASP.NET读取XML某节点所有数据返回DataTable的实例
网上有好多ASP.NET读取XML的例子,比如使用Dataset来读取,但本文教程却是使用XmlDocument来读取XML节点下所有数据,我们先来看下这个XML格式:SysRightsDb.xml XML Code [http://www.xueit.com] ? xml ve
网上有好多ASP.NET读取XML的例子,比如使用Dataset来读取,但本文教程却是使用XmlDocument来读取XML节点下所有数据,我们先来看下这个XML格式:SysRightsDb.xml
XML Code [http://www.xueit.com]
<?xml version="1.0" encoding="utf-8" ?> <root> <rights name="SYS"> <xml name="股票行情" code="stockmarket"></xml> <xml name="业务系统" code="sales"></xml> <xml name="客服系统" code="servcice"></xml> <xml name="财务系统" code="financial"></xml> <xml name="呼叫中心系统" code="callcenter"></xml> <xml name="报表系统" code="report"></xml> </rights> <rights name="financial"> <xml name="订单管理" code="so_mana"></xml> <xml name="订单列表" code="so_list"></xml> <xml name="申请审计" code="so_audit_list"></xml> <xml name="权限列表" code="so_ur_sour_list"></xml> </rights> </root>
从这个XML可以看下,我将使用ASP.NET读取权限系统中节点属性等于SYS下所有数据,及读取financial节点下所有数据。
这种XML数据格式让人看起来很明确就知道所代表的意思,看起来也不错。
下面开始吧。
第1、首先创建读取XML类xmlHepler,内容如下:
先引用两个命名空间
using System.Xml;
using System.Collections;
xmlHepler Code [http://www.xueit.com]
/// <summary> /// 作者:dodo /// 网站:www.xueit.com /// /// 读取XML类 /// </summary> /// <typeparam name="T"></typeparam> public class xmlHepler<T>:System.Web.UI.Page { Hashtable table = new Hashtable(); T FileName; T Root; //根节点 T RootAttName; //节点属性名称 T RootAttValue; //根节点属性值 T Field; //Xml字段 /// <summary> /// XML文件路径 /// </summary> /// <param name="val"></param> public xmlHepler(T val) { FileName = val; this.LoadXml(val.ToString()); } /// <summary> /// XML文件路径 /// </summary> /// <param name="file"></param> private void LoadXml(string file) { XmlDocument xdoc = new XmlDocument(); xdoc.Load(file); table.Add("xml", xdoc); } /// <summary> /// 返回XML to DataTable /// </summary> /// <returns></returns> public DataTable GetXmlToDataTable() { string[] SplitField=Field.ToString().Split(','); //构造DataTable DataTable dt = new DataTable(); DataColumn dc = null; for (int i = 0; i < SplitField.Length; i ) { dc = new DataColumn(SplitField[i]); dt.Columns.Add(dc); } XmlDocument xdoc = (XmlDocument)table["xml"]; XmlNodeList xTable = xdoc.DocumentElement.SelectNodes(Root.ToString()); foreach (XmlNode xnode in xTable) { if (xnode.Attributes[RootAttName.ToString()].InnerText == RootAttValue.ToString()) //某一节点 { //该节点下所有子节点 XmlNodeList xnlist = xnode.ChildNodes; //子节点所有数据 for (int i = 0; i < xnlist.Count; i ) //for (int i = 0; i < xnode.ChildNodes.Count; i ) 这句是所有xml子节点数据 { DataRow dr = dt.NewRow(); //绑定所需字段 for (int j = 0; j < SplitField.Length; j ) { dr[SplitField[j]] = xnode.ChildNodes[i].Attributes[SplitField[j]].Value; } dt.Rows.Add(dr); } } } return dt; } #region 设置值 /// <summary> /// 根节点 /// </summary> public T xmlRoot { get { return Root; } set { Root = value; } } /// <summary> /// 节点属性字段名称 /// </summary> public T xmlRootAttName { get { return RootAttName; } set { RootAttName = value; } } /// <summary> /// 节点属性字段值 /// </summary> public T xmlRootAttValue { get { return RootAttValue; } set { RootAttValue = value; } } /// <summary> /// 子节点属性字段 /// </summary> public T xmlSplitField { set { Field = value; } } #endregion }
这个xmlHepler类使用DocumentElement.SelectNodes来选择XML节点,之后if (xnode.Attributes[RootAttName.ToString()].InnerText == RootAttValue.ToString())获取相关属性的节点.
使用方法GetXmlToDataTable()来构造DataTable,把XML节点下所有数据导入到DataTable。
这个类的源码关键的地方都写了注释,很简单。
下面我们来看下如何调用这个类。
精彩图集
精彩文章
热门标签
SQL执行错误
统计sql
跨月查询
str_pad
可维护性
SQL语句
SQL脚本
sheet
数据库日志
百度Ueditor
ALLAUTH
网址信息
选择器
短信拦截
parseJSON
多值存储
essential
键名比较
敏感
radiobutton
数列
完整
脚
dbms_random
菜单项
栈
python字典排
禁用Tab键
找不到CS文件
urlencode
thinkphp验证码
内幕
atrr
独立
destoon
链接错误
拓展
CentosLinux5
重装失败
安装技巧
过滤HTML标签
海量数据处理
cloud
php 一个简单的
hash索引优化
30分钟入门教程
在
数字大小写转
水印
java执行javasc
有效
备份数据库
display属性
图片转换
sqldatasourc
系统版本
获取电池状态
写法
join方法
公共
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

