2012-06-24 10 views
0

XElement를 순환하여 데이터 테이블을 만들 수 없습니다. 내 XElement는 런타임에 빌드되므로 사전에 어떤 모습인지 모릅니다. DataTag에 XElement에있는 내용을 변환하려고 시도하므로 datagriview에 바인딩 할 수 있습니다.XElement를 Datatable로 변환합니다. 올바르게 가져올 수 없습니다.

내가 잘못하고있는 아이디어가 있습니까?

static void Main() 
    { 
     //at runtime could be any object 
     const string testXElement = @"<MyObject xmlns=""http://www.test.com/""> 
      <code>Test</code> 
      <Date>2012-06-24T00:00:00+01:00</Date> 
      <Name>John</Name> 
     </MyObject>"; 

     XElement element = XElement.Parse(testXElement); 
     var dgv=new DataGridView(); 

     //Build dataTable from it or 
     var dt=new DataTable(); 
     XNamespace ns = "http://www.test.com/"; 
     foreach (var x in element.Elements(ns + "MyObject")) 
     { 
     //I am never stepping into this one. 
      DataColumn dc=new DataColumn(); 
      dc.ColumnName = x.Name.ToString(); 
      DataRow row = dt.NewRow(); 
      row[dc] = x.Value;   
     } 
     dgv.DataSource = dt; 

    } 

답변

1

대신을 시도해보십시오

static void Main() 
    { 
     //at runtime could be any object 
     const string testXElement = @"<MyObject xmlns=""http://www.test.com/""> 
      <code>Test</code> 
      <Date>2012-06-24T00:00:00+01:00</Date> 
      <Name>John</Name> 
     </MyObject>"; 


     var dgv=new DataGridView(); 

     //Build dataTable from it or 
     var dt=new DataTable(); 
XmlReader rdr = XmlReader.Create(new System.IO.StringReader(testXElement)); 
    while (rdr.Read()) 
    { 
      DataColumn dc=new DataColumn(); 
      dc.ColumnName = x.Name.ToString(); 
      DataRow row = dt.NewRow(); 
      row[dc] = x.Value; 

     } 
     dgv.DataSource = dt; 
    } 
관련 문제