在C#中怎样读写XML文件到DataGrid上去
我想在C#的Windows窗体中用菜单写XML和读出XML应该怎么做。就是
我首先写个XML文件后可以在窗体的DataGrid中读出XML但不能在上面添加
新的记录,并且要求新的记录能够保存在XML文件中。下面是读XML文件的
代码,写进去的代码我不知怎么写。
//创建DataSet对象
DataSet myDataSet = new DataSet(); //加载XML数据
myDataSet.ReadXml(@"..\Employee.xml");
// [把(ReadXML改写成WriteXml不能成功)] //将数据集邦定到数据网格
dataGrid1.DataSource = myDataSet;
dataGrid1.SetDataBinding(myDataSet,"Employee" );
是不是要用到XSD模式。
也就是怎样用DataGrid建一个动态的数据表。
装在xml到DataSetusing System;
using System.Data;
using System.Collections;
using System.Xml;
using System.IO;
using System.Text;namespace ConsoleTest
{
/// <summary>
/// ZZConsole 的摘要说明。
/// </summary>
public class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
XmlDocument xdoc= new XmlDocument();
xdoc.Load(@"d:\test.xml");
DataSet ds = CreatDataSet();
XmlNodeList xList = xdoc.SelectNodes("//Item");
foreach(XmlNode xNode in xList)
{
DataRow dr = ds.Tables["Items"].NewRow();
dr["Item"] = xNode.Attributes["Name"].Value;
ds.Tables["Items"].Rows.Add(dr);
}
foreach(DataRow dr in ds.Tables["Items"].Rows)
{
Console.WriteLine(dr["Item"].ToString());
}
Console.ReadLine();
}
public static DataSet CreatDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Items");
DataColumn dc = new DataColumn("Item",typeof(string));
dt.Columns.Add(dc);
ds.Tables.Add(dt);
return ds;
}
}
}
=======================================================
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<Class Name="1">
<Item Name="Item11"/>
<Item Name="Item12"/>
<Item Name="Item13"/>
<Item Name="Item14"/>
</Class>
<Class Name="2">
<Item Name="Item21"/>
<Item Name="Item22"/>
<Item Name="Item23"/>
<Item Name="Item24"/>
</Class>
</Root>DataGrid绑定DataSet就可以显示数据了。
我想在C#的Windows窗体中用菜单写XML和读出XML应该怎么做。就是
我首先写个XML文件后可以在窗体的DataGrid中读出XML但不能在上面添加
新的记录,并且要求新的记录能够保存在XML文件中。下面是读XML文件的
代码,写进去的代码我不知怎么写。
//创建DataSet对象
DataSet myDataSet = new DataSet(); //加载XML数据
myDataSet.ReadXml(@"..\Employee.xml");
// [把(ReadXML改写成WriteXml不能成功)] //将数据集邦定到数据网格
dataGrid1.DataSource = myDataSet;
dataGrid1.SetDataBinding(myDataSet,"Employee" );
是不是要用到XSD模式。
也就是怎样用DataGrid建一个动态的数据表。
装在xml到DataSetusing System;
using System.Data;
using System.Collections;
using System.Xml;
using System.IO;
using System.Text;namespace ConsoleTest
{
/// <summary>
/// ZZConsole 的摘要说明。
/// </summary>
public class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
XmlDocument xdoc= new XmlDocument();
xdoc.Load(@"d:\test.xml");
DataSet ds = CreatDataSet();
XmlNodeList xList = xdoc.SelectNodes("//Item");
foreach(XmlNode xNode in xList)
{
DataRow dr = ds.Tables["Items"].NewRow();
dr["Item"] = xNode.Attributes["Name"].Value;
ds.Tables["Items"].Rows.Add(dr);
}
foreach(DataRow dr in ds.Tables["Items"].Rows)
{
Console.WriteLine(dr["Item"].ToString());
}
Console.ReadLine();
}
public static DataSet CreatDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Items");
DataColumn dc = new DataColumn("Item",typeof(string));
dt.Columns.Add(dc);
ds.Tables.Add(dt);
return ds;
}
}
}
=======================================================
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<Class Name="1">
<Item Name="Item11"/>
<Item Name="Item12"/>
<Item Name="Item13"/>
<Item Name="Item14"/>
</Class>
<Class Name="2">
<Item Name="Item21"/>
<Item Name="Item22"/>
<Item Name="Item23"/>
<Item Name="Item24"/>
</Class>
</Root>DataGrid绑定DataSet就可以显示数据了。
ds.ReadXml("测试文件.xml");xml文件必须是三层结构,不能有两个根元素.
正确!
try
{
DataSet guestData = new DataSet();
FileStream fin ;
fin = new FileStream(Server.MapPath(datafile),FileMode.Open, FileAccess.Read,FileShare.ReadWrite) ;
guestData.ReadXml(fin);
fin.Close();
DataTable customerTable = guestData.Tables[0];
MyDataList.DataSource = customerTable;
MyDataList.DataBind();
}
注:
guestData.Tables[0];第一层
guestData.Tables[1];第二层
guestData.Tables[2];第三层