C# 强类型数据集-XML序列化

C# 强类型数据集-XML序列化,c#,datatable,dataset,xml-serialization,strongly-typed-dataset,C#,Datatable,Dataset,Xml Serialization,Strongly Typed Dataset,我的项目中有一个类型化数据集,需要从XML导入数据。我设法将数据导入到类型化数据集中的Tables集合中,但我需要通过注释(与数据集中的表同名的属性)访问数据 this.ConfigDataSet.Reset(); this.ConfigDataSet.ReadXml(FileName,XmlReadMode.ReadSchema); this.ConfigDataSet.AcceptChanges(); 我必须逐字段复制数据吗 我有这样的想法: this.ConfigDataSet.Tabl

我的项目中有一个类型化数据集,需要从XML导入数据。我设法将数据导入到类型化数据集中的Tables集合中,但我需要通过注释(与数据集中的表同名的属性)访问数据

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
this.ConfigDataSet.AcceptChanges();
this.ConfigDataSet.WriteXml(FileName,XmlWriteMode.WriteSchema);
我这样编写xml:

this.ConfigDataSet.Tables["TabName"].Rows.Count //returns 3 
this.ConfigDataSet.TabName.Rows.Count //returns 0
this.ConfigDataSet.AcceptChanges();
this.ConfigDataSet.WriteXml(FileName,XmlWriteMode.WriteSchema);
看看这个:

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;
    }
}
检查是否有
DataSet.WriteXml()
DataSet.ReadXml()

解决方案:

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);
                }
需要分别加载每个表,但这比逐行加载每个字段要好


你好,库巴。

你检查过你的
xml
文件了吗?它正在文件中写入数据吗?是的,它在。正如我所说,数据在新的数据集中,但在just in Table属性中。请检查下面的答案Hanks for replay。不幸的是,这个示例显示了我实际进行的XML读取。这些数据集不是典型的强类型数据集-它们没有针对每个表的特殊属性:是否签出了
DataSet.WriteXml()
DataSet.ReadXml()
据我所知,在msdnAs中,我无法使用标准方法WriteXML和ReadXML导出/导入强类型,对吗?