要求:把XML文件中的数据转换为DataSet对象,然后用GridView数据库控件显示出来。
方法:页面初始化调用GetDataSet()函数,然后创建保存数据的DataSet对象ds和DataTable对象的dataTable,在从XML文件xmlfile.xml中读取数据,并添加到对象dataTable中,最后使用dataTable填充DataSet对象ds,最后进行GridView绑定。
xmlfile.xml文件内容格式如下:
<?xml version="1.0"?>
<Users>
<Users UserID="1" UserName="WuWei" RealName="无为" CreateDate="2008-06-24"/>
<Users UserID="2" UserName="CongHua" RealName="葱花" CreateDate="2008-06-24"/>
<Users UserID="3" UserName="YangYang" RealName="样样" CreateDate="2008-06-24"/>
</Users>
代码如下:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
public partial class XmlToDS : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
///获取数据
DataSet ds = GetDataSet();
///绑定控件的数据
MyGridView.DataSource = ds;
MyGridView.DataBind();
}
}
private DataSet GetDataSet()
{ ///创建DataSet
DataSet ds = new DataSet();
///创建DataTable
DataTable dataTable = new DataTable("Users");
dataTable.Columns.Add("UserID", typeof(int));//dataTable.Columns获取该表列的集合
dataTable.Columns.Add("UserName");
dataTable.Columns.Add("RealName");
dataTable.Columns.Add("CreateDate",typeof(DateTime));
try
{ ///导入XML文件
XmlDocument doc = new XmlDocument();//XmlDocument类表示XML文档,它继承System.XML。
doc.Load(Server.MapPath("xmlfile.xml"));//加载指定的 XML 数据。
if(doc == null)
{
return null;
}
///读取XML文件
XmlNodeList nodeList = doc.SelectNodes("/Users/Users");//XmlNodeList表示排序的节点集合。 doc.SelectNodes()返回一个 XmlNodeList。
foreach(XmlNode node in nodeList)
{ ///读取每一行的数据
DataRow row = dataTable.NewRow();
row["UserID"] = Convert.ToInt32(node.Attributes["UserID"].Value);//通过XmlNode.Attributes属性,获取一个 XmlAttributeCollection,它包含该节点的属性。
row["UserName"] = node.Attributes["UserName"].Value;
row["RealName"] = node.Attributes["RealName"].Value;
row["CreateDate"] = Convert.ToDateTime(node.Attributes["CreateDate"].Value);
dataTable.Rows.Add(row);
}
}
catch(Exception ex)
{ ///抛出异常
throw new Exception(ex.Message,ex);
}
ds.Tables.Add(dataTable);
return (ds);
}
}