Puis-je générer une classe C # à partir d'un fichier XML?
Oui, en utilisant xsd.exe
D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.
Remarques
Answer comment changer de répertoire dans l’invite de commande du développeur en d:\temp peut être utile.
Si vous générez des classes pour un tableau multidimensionnel, le générateur XSD.exe contient un bogue, mais il existe des solutions de contournement .
Si vous travaillez sur un projet .NET 4.5 dans VS 2012 (ou une version plus récente), vous pouvez simplement Coller spécial votre fichier XML en tant que classes.
EDIT > Paste Special > Paste XML As Classes
Au début, je pensais que la Pâte Spéciale était le Saint Graal! Mais ensuite, j'ai essayé et mes cheveux sont devenus blancs, tout comme le film d'Indiana Jones.
Mais maintenant, j'utilise http://xmltocsharp.azurewebsites.net/ et maintenant je suis aussi jeune que jamais.
Voici un segment de ce qu'il a généré:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
Je me rends compte qu'il s'agit d'un article plutôt ancien et que vous êtes probablement passé à autre chose.
Mais j'avais le même problème que vous et j'ai donc décidé d'écrire mon propre programme.
Le problème avec la route "xml -> xsd -> classes", c’est qu’il a simplement généré Un bloc de code qui était tout à fait intolérable et que j’ai fini par l’analyser.
Ce n’est pas élégant, mais c’est fait pour moi.
Vous pouvez l'obtenir ici: Faites des suggestions si vous l'aimez.
Vous devriez considérer svcutil ( svcutil question )
Xsd.exe et svcutil opèrent tous deux sur le fichier de schéma XML (.xsd). Votre code XML doit être conforme à un fichier de schéma pour pouvoir être utilisé par l'un de ces deux outils.
Notez que divers outils tiers existent également pour cela.
Vous pouvez utiliser xsd comme suggéré par Darin.
De plus, il est recommandé de modifier le fichier test.xsd pour créer un schéma plus raisonnable.
type="xs:string"
peut être changé en type="xs:int"
pour les valeurs entièresminOccurs="0"
peut être changé en minOccurs="1"
lorsque le champ est obligatoiremaxOccurs="unbounded"
peut être changé en maxOccurs="1"
où un seul élément est autorisé
Vous pouvez créer des fichiers xsd-s plus avancés si vous souhaitez valider davantage vos données, mais cela vous donnera au moins des types de données raisonnables dans le c # généré.
Utilisez la syntaxe ci-dessous pour créer une classe de schéma à partir d'un fichier XSD.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
Pour convertir XML en classe C #:
Remarque: dans le temps qui passe, cette application peut être remplacée, mais il y a de fortes chances pour qu'un autre outil fasse la même chose.