Преобразуйте DataTable в XML-файл и наоборот

У меня есть проблема с чтением XML-файла на a DataTable. Первоначально, я пишу a 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);
    }
}
5
задан Andrew T. 1 July 2014 в 09:46
поделиться

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);
        }
3
ответ дан 18 December 2019 в 07:53
поделиться

Возможно, будет проще просто работать с 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");
17
ответ дан 18 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: