在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就可以显示数据了。

解决方案 »

  1.   

    严重同意zhjboss(小张),反正思路就是先用dataset的readxml方法读取xml文档,再把dataset绑定到datagrid
      

  2.   

    DataSet ds=new DataSet();
    ds.ReadXml("测试文件.xml");xml文件必须是三层结构,不能有两个根元素.
      

  3.   

    最好定义架构,读XML文件的同时读入架构
      

  4.   

    “严重同意zhjboss(小张),反正思路就是先用dataset的readxml方法读取xml文档,再把dataset绑定到datagrid”
    正确!
      

  5.   

    string datafile = "message/message.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];第三层