要求:把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); } }