2011-10-18 11 views
17

C#でXML文字列をDataTableに変換する方法は?XML文字列をDataTableにC#

Iは、次のコードを試みた:

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; 

    } 

を、それが空のデータテーブルを返します。

答えて

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

    return theDataSet.Tables[0]; 
} 

あなたはDataSetにそれをロードするためにStringReaderを使用することができます。そこから、最初のインデックスを持つテーブルにはDataTableが含まれます。

+0

素敵な1つのコード... – Developer

+0

長い検索であなたの答えが終わった!ありがとうございました。 – peter70