把xml文件读到dataset中,然后用datalist或者datagrid控件显示!

解决方案 »

  1.   

    private void DemonstrateReadWriteXMLDocumentWithXMLReader(){
       // Create a DataSet with one table and two columns.
       DataSet OriginalDataSet = new DataSet("myDataSet");
        OriginalDataSet.Namespace= "NetFrameWork";
       DataTable myTable = new DataTable("myTable");
       DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
       c1.AutoIncrement= true;
       DataColumn c2 = new DataColumn("item");
       myTable.Columns.Add(c1);
       myTable.Columns.Add(c2);
       OriginalDataSet.Tables.Add(myTable);
       // Add ten rows.
       DataRow newRow;
       for(int i = 0; i < 10; i++){
          newRow = myTable.NewRow();
          newRow["item"]= "item " + i;
          myTable.Rows.Add(newRow);
       }
       OriginalDataSet.AcceptChanges();
       // Print out values of each table in the DataSet using the 
       // function defined below.
       PrintValues(OriginalDataSet, "Original DataSet");
       // Write the XML schema and data to file with FileStream.
       string xmlFilename = "myXmlDocument.xml";
       // Create FileStream    
       System.IO.FileStream fsWriteXml = new System.IO.FileStream
          (xmlFilename, System.IO.FileMode.Create);
       // Create an XmlTextWriter to write the file.
       System.Xml.XmlTextWriter xmlWriter = new System.Xml.XmlTextWriter
          (fsWriteXml, System.Text.Encoding.Unicode);
       // Use WriteXml to write the document.
       OriginalDataSet.WriteXml(xmlWriter);
       // Close the FileStream.
       fsWriteXml.Close();
          
       // Dispose of the original DataSet.
       OriginalDataSet.Dispose();
       // Create a new DataSet.
       DataSet newDataSet = new DataSet("New DataSet");
          
       // Read the XML document back in. 
       // Create new FileStream to read schema with.
       System.IO.FileStream fsReadXml = new System.IO.FileStream
          (xmlFilename, System.IO.FileMode.Open);
       // Create an XmlTextReader to read the file.
       System.Xml.XmlTextReader myXmlReader = 
          new System.Xml.XmlTextReader(fsReadXml);
       // Read the XML document into the DataSet.
       newDataSet.ReadXml(myXmlReader);
       // Close the XmlTextReader
       myXmlReader.Close();   // Print out values of each table in the DataSet using the 
       // function defined below.
       PrintValues(newDataSet,"New DataSet");
    }private void PrintValues(DataSet ds, string label){
       Console.WriteLine("\n" + label);
       foreach(DataTable t in ds.Tables){
          Console.WriteLine("TableName: " + t.TableName);
          foreach(DataRow r in t.Rows){
             foreach(DataColumn c in t.Columns){
                Console.Write("\t " + r[c] );
             }
             Console.WriteLine();
          }
       }
    }
      

  2.   

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