2008-11-27 7 views
1

j'ai écrit un fichier de schéma XML manuellement (ne pas utiliser le Concepteur de DataSet dans VS) et un fichier XML correspondant contenant des données structurées à lire.DataSets typés avec des sources de données XML et des schémas

Je courais le programme xsd.exe pour générer une classe Typed DataSet; dans l'ensemble, il semble bien pour commencer (en ignorant la façon dont il utilise les minuscules pour les membres de la classe publique), mais quand il vient à l'aide de rien de classe générée se produit:

MyDataSet set = new MyDataSet(); 
set.ReadXml("myData.xml"); 

A ce stade, tous les membres de la table typée de la classe MyDataSet une .Count de 0.

assez strangly, je ne peux pas obtenir DataSets normal de travailler soit:

DataSet set = new DataSet(); 
set.ReadXmlSchema("mySchema.xsd"); 
set.ReadXml("myData.xml"); 

set.Tables.Count retourne 7, ce qui est juste, mais les tables sont tous vides.

Est-ce que quelque chose me manque?

MISE À JOUR:.

Après avoir fait absolument rien set.Tables [ "extra"] Rows.Count renvoie le nombre correct de lignes; mais quand j'utilise un ensemble de données typé, il ne fonctionne pas, malgré tout le reste étant le même:

DataSet ds = new DataSet(); 
ds.ReadXml  (packageExamplePath); 

System.Console.WriteLine(ds.Tables["extra"].Rows.Count); 

Package st = new Package(); 
st.ReadXml(packageExamplePath); 

System.Console.WriteLine(st.Tables["extra"].Rows.Count); 

... imprime ceci à la console:

19 
0 

Gah!

Répondre

0

Question: le code de xsd.exe est-il généré correctement? Par exemple, pouvez-vous utiliser le DS généré dans le code, créer des DataRows, les ajouter aux DataTables, etc?

Si c'est le cas, essayez de remplir le DS manuellement, en enregistrant le fichier XML et en le comparant à votre fichier de données XML structuré pour vous assurer qu'il a la même structure.

Questions connexes