Generation de classes à partir d'un fichier XML complexe [Résolu]

Signaler
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour, comme indiqué dans le sujet, je cherche a generer des fichiers classe a partir d'un fichier XML assez complexe et, il faut bien l'admettre, je patauge allegrement dans les fonctions de serialisation de C#.

Est-il possible de faire cela ? Si oui...quelqu'un pourrait il m'aiguiller ?

En vous remerciant, a+!

12 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Salut,

Tu peux utiliser l'utilitaire xsd.exe
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp

xsd.exe fichier.xml  -> te donne un fichier xsd.
xsd.exe fichier.xsd  /c /l:cs -> te donne ta classe en c#

Mx
MVP C# 
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Merci m'sieur ! J'ai trouvé cette application, bien sympathique, il est vrai... Mais je dois faire une application de mes mains...ou de mes doigts... c'est là qu'est tout le probleme... Savez-vous quelle methode est utilisée dans ce type d'application ?
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Bonjour, il semblerait que je puisse utiliser ce programme, mais savez vous si une licence est requise pour son utilisation ?
Si non, je debouche le champagne !
En vous remerciant, a+
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Une licence ?
Disons qu'il est fourni avec le SDK, donc tu peux tout a fait t'en servir librement.
Si maintenant tu souhaites l'embarquer avec ton appli, la par contre je ne pense pas que tu puisses. A moins d'embarquer tout le sdk

Mx
MVP C# 
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

C'est donc là que ça va coincer...je range ma bouteille moi...
Je suis certain que tu aurais une solution a mon probleme, toi, Ô grand Morpion , dont la teneur est de realiser un "parser" xml avec generation de classes c#...portable donc vers n'importe quelle machine...

J'ai bien trouvé une dll ici : http://www.sellsbrothers.com/tools/ son nom est .NET XsdClassesGen
Si mes bribes de connaissances en developpement sont correctes, mon application pourra se servir de cette dll sur une autre machine...non ?

Cependant, je dois etre un peu nul car je n'arrive meme pas a m'en servir dans mon code...

Y aurait-il une âme charitable pour me tenir la main pendant que je code ?

http://www.sellsbrothers.com/tools/#xsdClassesGen
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Si tu regardes le code, cette dll utilise xsd.exe.
Mais comme il s'agit d'un add-in pour Visual Studio, on part du principe qu'xsd.exe est forcément installé sur la machine.

Mx
MVP C# 
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Oui petite erreur de ma part : c'est ceci que je me suis procuré : http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=ef3d0a73-0468-46da-8780-ede0f12b6f22
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Bon encore une question : admettons que j'arrive a installer cette dll sur ma machine, admettons... une fois l'application compilée, est-ce que cette  meme dll  devra etre presente  sur  les  autres  machines pour le bon fonctionnement du programme ??? Si oui...autant mettre directement les mains a la pate...
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
J'ai pas encore eu le temps de regarder ton lien.
Par contre, si c'est une dll, oui, il faudra que la dll se trouve sur les autres ordinateurs. Mais si tu la référence dans ton projet, elle accompagnera ton exe (pas incorporée avec), donc ce n'est pas un souci. Tu livreras la dll avec ton executable.

Mx
MVP C# 
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Ok j'avais deja utilisé cette technique pour un ancien projet...mais dans ce cas, l'installation de la dll est vraiment indigeste :

Installing this Build

<li>Add SkybowVsCodeGenerator.dll to the GAC using
GACUTIL.EXE with the /i switch.
</li><li>Add SkybowVsCodeGeneratorShim.dll to the GAC
using GACUTIL.EXE with the /i switch.
</li><li>Register SkybowVsCodeGeneratorShim.dll using
REGASM.EXE (no switches necessary).</li>Sample VS Solution for Running Sample Code
Generators

To try the sample code generators, you need to open the
SampleCodeGeneratorsSample solution in Visual Studio 2002 or
2003. However, before you do that, you need to define an environment variable
called CODEGENPATH that points to the directory where
Skybow.SampleCodeGenerators.dll is located. The best way to do
this is to open a Command Prompt window (use the Visual
Studio .NET Commpand Prompt shortcut in your Start
menu created by Visual Studio), define the CODEGENPATH variable
and then launch Visual Studio 2002 or 2003 by running MSDEV.EXE
from the same Command Prompt.

Il me parait tout a fait inconcevable d'obliger l'utilisateur a executer toutes ces manipulations...

Il me reste donc 2 choix possibles : créer une installation pour la dll, ou livrer l'appli avec le xsd.exe... a ton avis quel est le meilleur ?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Si la dll repond a tes besoins, et que tu as le droit de la distribuer, alors tu peux utiliser la solution de l'installation.

Mx
MVP C# 
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Salut,

Juste au cas où, un utilitaire pouvant peut être correspondre figure parmis les téléchargements du centre de développement XML :
XSD Object Code Generatorhttp://msdn.microsoft.com/XML/XMLDownloads/default.aspx

/*
coq
MVP Visual C#
CoqBlog
*/