如何使用XML填充DataSet

要求:把XML文件中的数据转换为DataSet对象,然后用GridView数据库控件显示出来。

方法:页面初始化调用GetDataSet()函数,然后创建保存数据的DataSet对象ds和DataTable对象的dataTable,在从XML文件xmlfile.xml中读取数据,并添加到对象dataTable中,最后使用dataTable填充DataSet对象ds,最后进行GridView绑定。

xmlfile.xml文件内容格式如下:

  1. <?xml version="1.0"?>  
  2.   
  3. <Users>     
  4.   
  5.   <Users UserID="1" UserName="WuWei" RealName="无为" CreateDate="2008-06-24"/>  
  6.   
  7.   <Users UserID="2" UserName="CongHua" RealName="葱花" CreateDate="2008-06-24"/>  
  8.   
  9.   <Users UserID="3" UserName="YangYang" RealName="样样" CreateDate="2008-06-24"/>     
  10.   
  11. </Users>  
  1. 代码如下:<PRE class=csharp name="code">using System;   
  2.   
  3. using System.Data;   
  4.   
  5. using System.Configuration;   
  6.   
  7. using System.Collections;   
  8.   
  9. using System.Web;   
  10.   
  11. using System.Web.Security;   
  12.   
  13. using System.Web.UI;   
  14.   
  15. using System.Web.UI.WebControls;   
  16.   
  17. using System.Web.UI.WebControls.WebParts;   
  18.   
  19. using System.Web.UI.HtmlControls;   
  20.   
  21. using System.Xml;   
  22.   
  23.   
  24.   
  25. public partial class XmlToDS : System.Web.UI.Page   
  26.   
  27. {   
  28.   
  29.     protected void Page_Load(object sender, EventArgs e)   
  30.   
  31.     {   
  32.   
  33.         if(!Page.IsPostBack)   
  34.   
  35.         {   
  36.   
  37.             ///获取数据   
  38.   
  39.             DataSet ds = GetDataSet();   
  40.   
  41.             ///绑定控件的数据   
  42.   
  43.             MyGridView.DataSource = ds;   
  44.   
  45.             MyGridView.DataBind();   
  46.   
  47.         }   
  48.   
  49.     }   
  50.   
  51.     private DataSet GetDataSet()   
  52.   
  53.     {   ///创建DataSet   
  54.   
  55.         DataSet ds = new DataSet();   
  56.   
  57.         ///创建DataTable   
  58.   
  59.         DataTable dataTable = new DataTable("Users");   
  60.   
  61.         dataTable.Columns.Add("UserID", typeof(int));//dataTable.Columns获取该表列的集合   
  62.   
  63.         dataTable.Columns.Add("UserName");   
  64.   
  65.         dataTable.Columns.Add("RealName");   
  66.   
  67.         dataTable.Columns.Add("CreateDate",typeof(DateTime));      
  68.   
  69.         try   
  70.   
  71.         {   ///导入XML文件   
  72.   
  73.             XmlDocument doc = new XmlDocument();//XmlDocument类表示XML文档,它继承System.XML。   
  74.   
  75.             doc.Load(Server.MapPath("xmlfile.xml"));//加载指定的 XML 数据。   
  76.   
  77.             if(doc == null)   
  78.   
  79.             {   
  80.   
  81.                 return null;   
  82.   
  83.             }   
  84.   
  85.             ///读取XML文件   
  86.   
  87.             XmlNodeList nodeList = doc.SelectNodes("/Users/Users");//XmlNodeList表示排序的节点集合。 doc.SelectNodes()返回一个 XmlNodeList。   
  88.   
  89.             foreach(XmlNode node in nodeList)   
  90.   
  91.             {   ///读取每一行的数据   
  92.   
  93.                 DataRow row = dataTable.NewRow();   
  94.   
  95.                 row["UserID"] = Convert.ToInt32(node.Attributes["UserID"].Value);//通过XmlNode.Attributes属性,获取一个 XmlAttributeCollection,它包含该节点的属性。   
  96.   
  97.                 row["UserName"] = node.Attributes["UserName"].Value;   
  98.   
  99.                 row["RealName"] = node.Attributes["RealName"].Value;   
  100.   
  101.                 row["CreateDate"] = Convert.ToDateTime(node.Attributes["CreateDate"].Value);   
  102.   
  103.                 dataTable.Rows.Add(row);   
  104.   
  105.             }   
  106.   
  107.         }   
  108.   
  109.         catch(Exception ex)   
  110.   
  111.         {   ///抛出异常   
  112.   
  113.             throw new Exception(ex.Message,ex);   
  114.   
  115.         }   
  116.   
  117.         ds.Tables.Add(dataTable);   
  118.   
  119.         return (ds);   
  120.   
  121.     }   
  122.   
  123. }   
  124.   
  125. </PRE>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值