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