2008-09-03 4 views
7

Dans Visual Studio, vous pouvez créer un document XML de modèle à partir d'un schéma existant. Le nouveau XML Schema Explorer dans VS2008 SP1 va encore plus loin et peut créer un exemple de document XML complet avec des données. Y at-il une bibliothèque de classes dans .NET pour le faire automatiquement sans avoir à utiliser Visual Studio? J'ai trouvé l'article XmlSampleGenerator sur MSDN mais il a été écrit en 2004 alors peut-être que quelque chose est déjà inclus dans .NET pour le faire maintenant?Existe-t-il une classe pour générer un exemple de document XML à partir du schéma XSD dans .NET?

+0

duplication possible de [Création d'un fichier xml à partir de xsd dans .NET] (http://stackoverflow.com/questions/808378/creating-an-xml-file-from-xsd-in-net) –

Répondre

0

Directement, tout ce que je peux penser, autres que les modules complémentaires tiers. Vous pouvez utiliser le xsd schema definition tool pour prendre votre XSD et créer un objet .NET/classe, une fois que vous avez, vous pouvez, pour citer la page liée:

XSD aux classes: Génère cours d'exécution à partir d'un fichier de schéma XSD . Les classes générées peuvent être utilisées conjointement avec System.Xml.Serialization.XmlSerializer pour lire et écrire du code XML qui suit le schéma.

7

jeu de jambes est impliqué, mais vous pouvez charger le xsd dans un objet DataSet, itérer sur les tables et ajouter quelques lignes dans chaque en appelant appelant NewRow() sur chaque, puis en ajoutant les lignes de retour dans leurs pays respectifs tables .. puis enregistrez le DataSet dans un fichier:

DataSet ds = new DataSet(); 
ds.ReadXmlSchema("c:/xsdfile.xsd"); 

foreach(DataTable t in ds.Tables) 
{ 
var row = t.NewRow(); 
t.Rows.Add(row); 
} 

ds.WriteXml("c:/example.xml"); 

PS Un peu de travail supplémentaire, mais au lieu de simplement faire des itérations sur chaque type de table et ajouter des lignes vides, vous pouvez créer une belle winform qui vous permettra d'ajouter des données pour chacune des lignes. J'ai construit quelque chose comme ça dans environ une heure il y a quelques semaines.

Questions connexes