0

J'ai un jeu de données typé dans mon projet et j'ai besoin d'importer des données à partir de XML. J'ai réussi à importer des données dans la collection Tables de mon jeu de données typé, mais j'ai besoin d'avoir accès aux données via Annotations - propriétés nommées comme les tables de mon jeu de données.Jeu de données fortement typé - XML ​​Serialization

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

Dois-je copier un champ de données par champ?

J'ai quelque chose comme ceci:

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

J'écris xml comme ceci:

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

jetez-vous un oeil sur votre fichier 'xml', écrivez-vous des données dans le fichier? – Arshad

+0

oui, c'est. Comme je l'ai dit, les données sont dans le nouvel ensemble de données mais seulement dans la propriété Table. –

+0

vérifier la réponse ci-dessous – Arshad

Répondre

0

Solution:

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); 
       } 

Il est nécessaire de charger chaque table séparément, mais il est préférable de charger chaque ligne de champ par ligne.

Cordialement, Kuba.

0

Check this out:

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; 
    } 
} 

Vérifier here pour DataSet.WriteXml() et here pour DataSet.ReadXml();

+0

Merci pour la relecture. Malheureusement cet exemple montre la lecture de XML que j'ai réellement faite. Ces ensembles de données ne sont généralement pas fortement typés DataSet - ils n'ont pas de propriété spéciale pour chaque table: [link] (http://oi43.tinypic.com/2zpuvrm.jpg) –

+0

Avez-vous vérifié? DataSet.WriteXml(); 'et' DataSet.ReadXml(); 'dans msdn – Arshad

+0

Si je comprends bien, je ne peux pas exporter/importer fortement typé en utilisant les méthodes standard WriteXML et ReadXML, non? –

Questions connexes