Конвертировать DataTable в XML-файл и наоборот - PullRequest
5 голосов
/ 29 июня 2010

У меня проблема с чтением файла 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);
    }
}

Ответы [ 2 ]

17 голосов
/ 29 июня 2010

Может быть проще работать с высокоуровневым набором данных, например:

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");
3 голосов
/ 29 июня 2010

Я исправил, Проблема в том, что имя таблицы было присвоено при сохранении, но не при чтении. Поэтому присвойте имя таблице глобально, что позволит без проблем читать и писать.

так будет код,

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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...