web-dev-qa-db-fra.com

Générer une classe C # à partir de XML

Puis-je générer une classe C # à partir d'un fichier XML?

214
user496949

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 .

308
Darin Dimitrov

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.

  1. Copiez le contenu de votre fichier XML dans le presse-papier 
  2. Dans l'éditeur, sélectionnez le lieu où vous souhaitez coller vos classes 
  3. Dans le menu, sélectionnez EDIT > Paste Special > Paste XML As Classes 
380
miszczu

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; }
35
D. Kermott

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.

SimpleXmlToCode

22
Talon

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.

6
ng5000

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ères
minOccurs="0" peut être changé en minOccurs="1" lorsque le champ est obligatoire
maxOccurs="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é.

3
Albin Sunnanbo

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\
0
Kiran.Bakwad

Pour convertir XML en classe C #:

  • Accédez au marché Microsoft Visual Studio: -- https://marketplace.visualstudio.com
  • Dans la barre de recherche, entrez le texte: -- outil de code XML en classe
  • Téléchargez, installez et utilisez l'application

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. 

0
J Wood