原创: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。
这个类的源码关键的地方都写了注释,很简单。
下面我们来看下如何调用这个类。
精彩图集
精彩文章
热门标签
实时汇率转换
运行信息
find空文件夹
数组指针函数
传引用
sqlserver游标
HttpURLConne
onmousewheel
正常
弹出登陆框
having字句
缓冲
对象引用
kitjs
自增字段
php列目录
request
php教程
表单模型
邮件会话
switch用法
string
strrpos
beginthread
回收
前后台
屏幕密度
字幕滚动
java查询mongod
mysql.sock
派生类
日志传送
函
内建函数
ODBC
php 简单的p
JS小游戏
文件权限
删除数据库
js检测浏览器
explicit
查看时
word
form.submit(
版本号
adb命令大全
时钟
substr
后一天
更新字符串
敏感信息
转盘
模版
u盘内存卡
图片处理
编程语言
ED2K
微信公
fso
tail
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

