0

我在我的項目中有一個類型化的數據集,我需要從XML導入數據。我設法將數據導入到我的類型化數據集中的Tables集合中,但我需要通過Annotations - 與我的數據集中的表命名相同的屬性訪問數據。強類型數據集 - XML序列化

this.ConfigDataSet.Reset(); 
this.ConfigDataSet.ReadXml(FileName,XmlReadMode.ReadSchema); 
this.ConfigDataSet.AcceptChanges(); 

我是否必須按字段複製數據?

我有這樣的事情:

this.ConfigDataSet.Tables["TabName"].Rows.Count //returns 3 
this.ConfigDataSet.TabName.Rows.Count //returns 0 

我寫這樣的XML:

this.ConfigDataSet.AcceptChanges(); 
this.ConfigDataSet.WriteXml(FileName,XmlWriteMode.WriteSchema); 
+0

你有沒有檢查你的'xml'文件,它是否在文件中寫入數據? – Arshad 2013-05-13 12:49:30

+0

是的,是的。正如我所說,數據是在新的數據集中,但在表屬性中。 – 2013-05-13 12:56:04

+0

檢查下面的答案 – Arshad 2013-05-13 12:58:05

回答

0

解決方案:

中WriteXML:

   ConfigDataSet.WriteXml(FileName); 

的ReadXml:

    using (DataSet ds = new DataSet()) 
       { 
        ds.ReadXml(FileName); 
        ConfigDataSet.Load(ds.Tables[0].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName1); 
        ConfigDataSet.Load(ds.Tables[1].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName2); 
        ConfigDataSet.Load(ds.Tables[2].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName3); 
        ConfigDataSet.Load(ds.Tables[3].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName4); 
       } 

它需要分別加載每個表,但它比由行加載每個場行更好。

問候,庫巴。

0

檢查了這一點:

class Program 
{ 
    static void Main(string[] args) 
    { 
     DataTable tbl = GetTable(); 
     DataSet ds = new DataSet(); 
     ds.Tables.Add(tbl); 
     //file path to write xml file 
     ds.WriteXml("test.xml"); 

     DataSet ds2 = new DataSet(); 
     //file path to read xml file 
     ds2.ReadXml("test.xml"); 
    } 
    static DataTable GetTable() 
    { 
     DataTable table = new DataTable(); 
     table.Columns.Add("Dosage", typeof(int)); 
     table.Columns.Add("Drug", typeof(string)); 
     table.Columns.Add("Patient", typeof(string)); 
     table.Columns.Add("Date", typeof(DateTime)); 

     table.Rows.Add(25, "Indocin", "David", DateTime.Now); 
     table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now); 
     table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now); 
     table.Rows.Add(21, "Combivent", "Janet", DateTime.Now); 
     table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now); 
     return table; 
    } 
} 

檢查hereDataSet.WriteXml()hereDataSet.ReadXml();

+0

感謝您的重播。不幸的是,這個例子顯示了我實際上做過的XML讀取這些數據集通常不是強類型的DataSet - 它們對每個表都沒有特殊屬性: [鏈接] – 2013-05-13 14:51:20

+0

您是否檢查過DataSet.WriteXml ();'和'DataSet.ReadXml();'在msdn – Arshad 2013-05-13 14:54:26

+0

據我所知,我不能導出/導入強類型使用標準方法WriteXML和ReadXML,對吧? – 2013-05-13 19:36:47