Je fais des recherches sur la génération de code à partir de fichiers de schéma xsd. Mes exigences:
(Voir aussi mes autres questions: Comment puis-je générer plusieurs classes à partir de xsd avec des includes inclus? et Comment générer des commentaires à partir de balises xs: documentation dans un wsdl?
J'ai trouvé les options suivantes:
En ai-je manqué? Parce que (1), (2) et (5) ne génèrent pas de code 2.0, et j'ai des problèmes avec la sérialisation du code de (3). Qu'est-ce que vous utilisez lors de la génération de code?
Je crois que XSD2Code est le meilleur outil actuellement disponible (en 2011).
Récemment, j’ai suivi le même processus d’analyse des outils disponibles, c’est pourquoi j’ai pensé pouvoir fournir une réponse actualisée concernant VS2010.
Notre pilote principal était que xsd.exe ne générait pas de document XML à partir des annotations XSD, ce que nous voulions, car nous avons des centaines de définitions de types. J'ai essayé tous les outils énumérés ci-dessus ainsi que d'autres et la plupart ont été obsolètes, non entretenus ou incapables de correspondre à la fonctionnalité actuelle de xsd.exe disponible dans VS2010.
Xsd2Code est cependant un outil superbe et semble être activement maintenu. Elle fournit toutes les fonctionnalités énumérées ci-dessus et bien plus encore. La page CodePlex propose également d’excellents exemples de la manière dont les différentes options affectent la sortie.
Il a également une intégration VS étroite, y compris une intégration de menu contextuel et un outil de construction personnalisé (ce qui signifie que si vous référencez les XSD dans votre projet et spécifiez l'outil personnalisé, il mettra automatiquement à jour le code lors de la mise à jour de XSD). Au total, nous avons économisé beaucoup de travail.
Un résumé rapide des autres outils que j'ai consultés:
Addendum: Si vous décidez de continuer avec XSD2Code, je rencontre un certain nombre de problèmes lors de l'utilisation de l'outil de ligne de commande. En particulier, il existe des bogues dans le traitement des arguments qui nécessitent que certains arguments soient dans un certain ordre, ainsi que des dépendances non documentées (par exemple, les paramètres automatiques et la version .NET sont spécifiques à l’ordre et dépendants). Voici les étapes que j'ai utilisées pour générer le code à l'aide de XSD2Code, puis nettoyer la sortie - prenez les bits qui s'appliquent à vous si nécessaire:
Exécutez le fichier de commandes suivant pour générer le code initial, en modifiant les chemins d'accès aux emplacements appropriés:
@echo off
set XsdPath=C:\schemas
set OutPath=%XsdPath%\Code
set ExePath=C:\Progra~1\Xsd2Code
set Namespace=InsertNamespaceHere
echo.Starting processing XSD files ...
for /f %%a IN ('dir %XsdPath%\*.xsd /a-d /b /s') do call:ProcessXsd %%a
echo.Finished processing XSD files ...
echo.&pause&
goto:eof
:ProcessXsd
%ExePath%\Xsd2Code %~1 %Namespace% %XsdPath%\Code\%~n1%.cs /pl Net35 /if- /dc /sc /eit
echo.Processed %~n1
goto:eof
Effectuez les étapes suivantes pour ranger le code généré, si nécessaire:
J'espère que ça aide quelqu'un.
Je n'ai pas encore vérifié cela, mais Linq2XSD pourrait être une alternative utile.
Je vais tenter le coup. LINQ avec génération XSD serait meilleur que l’un quelconque des outils que vous avez mentionnés - à condition que cela fonctionne bien.
Projet OpenSource XSD to Classes a fonctionné parfaitement pour moi.
Essayez OxmLibrary - http://oxmlibrary.codeplex.com
J'ai un projet il y a un peu plus d'un an, nous avons utilisé CodeXS. Avec quelques ajustements mineurs (un script qui a un peu nettoyé le code généré) cela a fonctionné.
Il existe également Dingo , qui possède de très bonnes fonctionnalités d'extensibilité (dont nous n'avions pas besoin).
Le meilleur générateur de classe XSD que j'ai trouvé est thinktecture WSCF.blue .
Ou, si vous recherchez une solution T4, vous pouvez essayer XsdClassGen . Celui-ci ne fonctionne pas pour moi. Mais la bonne nouvelle est qu’il s’agit d’un fichier T4, il est donc facile de le réparer!