2010-06-28 27 views
5

Tengo un problema al leer un archivo XML en un DataTable. Inicialmente, escribo un Datatable en un archivo XML y lo guardo. Ahora, cuando quiero volver a leer el archivo XML en el DataTable, no está sucediendo.Convertir DataTable en archivo XML y viceversa

El código siguiente es para escribir el archivo:

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"); 
    } 
} 

Y para leer el archivo:

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); 
    } 
} 

Respuesta

3

Lo arreglé, El problema es que el nombre de la tabla se asignó al guardar pero no mientras se leía. Asigne el nombre de la tabla globalmente, lo que le permitirá leer y escribir sin ningún problema.

por lo que el código será,

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); 
     } 
16

Podría ser más fácil simplemente trabajar con el conjunto de datos de nivel superior, como esto:

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"); 
+1

Eso no es trabajar, ya sea .. – Yash

Cuestiones relacionadas