【问题标题】:Convert DataTable to XML file and viceversa将 DataTable 转换为 XML 文件,反之亦然
【发布时间】:2023-04-03 08:51:02
【问题描述】:

我在将 XML 文件读取到 DataTable 时遇到问题。最初,我将Datatable 写入XML 文件并保存。现在,当我想将 XML 文件读回 DataTable 时,它没有发生。

以下代码用于写入文件:

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
{
    if (myDT_For_DGV.Rows.Count != 0)
    {
        saveFileDialog1.ShowDialog();
        saveFileDialog1.FileName = "checkOutFile.xml";
        myDT_For_DGV.TableName = "CheckOutsAndIns";
        myDT_For_DGV.WriteXml(saveFileDialog1.FileName, true);
    }
    else
    {
        MessageBox.Show("Please add licences to DataGridView, you havent added any licences as of now", "Alert");
    }
}

对于读取文件:

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    //write code to open file
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        //myFile = openFileDialog1.FileName;
        System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();

        xmlStream.Position = 0;

        myDT_For_DGV.ReadXml(openFileDialog1.FileName);
        //MessageBox.Show(openFileDialog1.FileName);
    }
}

【问题讨论】:

    标签: c# .net xml datatable


    【解决方案1】:

    使用更高级别的 DataSet 可能更容易,如下所示:

    DataSet dataSet = new DataSet();
    DataTable dataTable = new DataTable();
    
    dataSet.Tables.Add(dataTable);
    // Save to disk
    dataSet.WriteXml(@"C:\MyDataset.xml");
    
    // Read from disk
    dataSet.ReadXml(@"C:\MyDataset.xml");
    

    【讨论】:

      【解决方案2】:

      我修好了,问题是,表名是在保存时分配的,但不是在读取时分配的。所以全局分配表名,这样可以让它读写没有任何问题。

      所以代码将是,

      myDT_For_DGV.TableName = "CheckOutsAndIns";
      
      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
             {              
                    myDT_For_DGV.ReadXml(@openFileDialog1.FileName);
                  //MessageBox.Show(openFileDialog1.FileName);
      
              }
      
      //TO WRITE TO XML
      if (myDT_For_DGV.Rows.Count != 0)
              {
                  saveFileDialog1.ShowDialog();
                  saveFileDialog1.FileName = "checkOutFile.xml";
                  myDT_For_DGV.WriteXml(saveFileDialog1.FileName, true);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-23
        • 2015-03-05
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多