2011-10-18 25 views
17

XML dize DataTable için C# dönüştürme nasıl? XML dize DataTable içinde C#

Aşağıdaki kod çalıştı:

public DataTable stam() 
    { 
     string xmlData = "<Names><Name>a</Name><Name>b</Name><Name>c</Name><Name>d</Name></Names>"; 

     XElement x = XElement.Parse(xmlData); 

     DataTable dt = new DataTable(); 

     XElement setup = (from p in x.Descendants() select p).First(); 
     foreach (XElement xe in setup.Descendants()) // build your DataTable 
      dt.Columns.Add(new DataColumn(xe.Name.ToString(), typeof(string))); // add columns to your dt 

     var all = from p in x.Descendants(setup.Name.ToString()) select p; 
     foreach (XElement xe in all) 
     { 
      DataRow dr = dt.NewRow(); 
      foreach (XElement xe2 in xe.Descendants()) 
       dr[xe2.Name.ToString()] = xe2.Value; //add in the values 
      dt.Rows.Add(dr); 
     } 
     return dt; 

    } 

ve boş bir DataTable döndürür.

cevap

44
public DataTable stam()  
{ 
    StringReader theReader = new StringReader(xmlData); 
    DataSet theDataSet = new DataSet(); 
    theDataSet.ReadXml(theReader); 

    return theDataSet.Tables[0]; 
} 

Bir DataSet içine yüklemek için bir StringReader kullanabilirsiniz. Oradan, ilk endeksi olan tablo DataTable'u içerecektir.

+0

Güzel bir kod sevgili ... – Developer

+0

Uzun bir aramanız cevabınızı buldu! Teşekkür ederim. – peter70