2011-10-18 69 views
17

如何將XML字符串轉換爲C#中的DataTable?在C#中的DataTable的XML字符串#

我嘗試下面的代碼:

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; 

    } 

,並返回一個空的DataTable。

回答

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

    return theDataSet.Tables[0]; 
} 

可以使用StringReader將其加載到一個DataSet。從那裏,第一個索引表將包含DataTable

+0

不錯的一個代碼親愛的... – Developer

+0

長時間的搜索找到了你的答案!謝謝。 – peter70