[英]Strongly typed dataset - XML Serialization
我的項目中有一個類型化的數據集,我需要從XML導入數據。 我設法將數據導入類型化數據集中的Tables集合中,但是我需要能夠通過Annotations(與我的數據集中的表命名相同的屬性)訪問數據。
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);
看一下這個:
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;
}
}
解:
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);
}
需要單獨加載每個表,但是比逐行加載每個字段更好。
問候,庫巴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.