wake-up-neo.com

Generieren Sie die C # -Klasse aus XML

Kann ich eine C # -Klasse aus einer XML-Datei erstellen?

214
user496949

Ja, mit 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'.

Anmerkungen

Antwort So ändern Sie das Verzeichnis in der Eingabeaufforderung des Entwicklers in d:\temp kann hilfreich sein.

Wenn Sie Klassen für mehrdimensionale Arrays generieren, liegt im XSD.exe-Generator ein Fehler vor, aber es gibt Problemumgehungen .

308
Darin Dimitrov

Wenn Sie an einem .NET 4.5-Projekt in VS 2012 (oder neuer) arbeiten, können Sie einfach Special Paste Ihre XML-Datei als Klassen verwenden.

  1. Kopieren Sie den Inhalt Ihrer XML-Datei in die Zwischenablage 
  2. Wählen Sie im Editor den Ort aus, an dem die Klassen eingefügt werden sollen 
  3. Wählen Sie im Menü EDIT > Paste Special > Paste XML As Classes aus. 
380
miszczu

Zuerst dachte ich, das Paste Special sei der heilige Gral! Aber dann habe ich es versucht und meine Haare wurden weiß wie der Indiana Jones-Film.

Aber jetzt benutze ich http://xmltocsharp.azurewebsites.net/ und bin jetzt so jung wie eh und je.

Hier ist ein Ausschnitt von dem, was es generiert hat:

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

Mir ist klar, dass dies ein ziemlich alter Beitrag ist und Sie wahrscheinlich weitergezogen sind.

Aber ich hatte das gleiche Problem wie Sie und beschloss, mein eigenes Programm zu schreiben.

Das Problem mit der "xml -> xsd -> classes" -Route für mich war, dass sie gerade einen Codeblock generierte, der völlig unverwundbar war.

Es ist keineswegs elegant, aber es hat die Arbeit für mich gemacht.

Sie können es hier bekommen: Bitte machen Sie Vorschläge, wenn es Ihnen gefällt.

SimpleXmlToCode

22
Talon

Sie sollten svcutil ( svcutil question ) in Betracht ziehen.

Sowohl xsd.exe als auch svcutil arbeiten mit der XML-Schemadatei (.xsd). Ihr XML muss mit einer Schemadatei übereinstimmen, die von einem dieser beiden Tools verwendet werden kann.

Beachten Sie, dass dazu auch verschiedene Tools von Drittanbietern vorhanden sind.

6
ng5000

Sie können xsd verwenden, wie von Darin vorgeschlagen.

Zusätzlich wird empfohlen, die test.xsd-Datei zu bearbeiten, um ein vernünftigeres Schema zu erstellen.

type="xs:string" kann für ganzzahlige Werte in type="xs:int" geändert werden
minOccurs="0" kann in minOccurs="1" geändert werden, wo das Feld erforderlich ist
maxOccurs="unbounded" kann in maxOccurs="1" geändert werden, wobei nur ein Element zulässig ist

Sie können erweiterte xsd-s erstellen, wenn Sie Ihre Daten weiter validieren möchten. Dies gibt Ihnen jedoch zumindest angemessene Datentypen im generierten c #.

3
Albin Sunnanbo

Verwenden Sie die folgende Syntax, um eine Schemaklasse aus einer XSD-Datei zu erstellen.

C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
0
Kiran.Bakwad

So konvertieren Sie XML in eine C # -Klasse:

  • Navigieren Sie zum Microsoft Visual Studio Marketplace: -- https://marketplace.visualstudio.com
  • Geben Sie in der Suchleiste Text: -- xml ein, um das Klassencodetool zu verwenden
  • Laden Sie die App herunter, installieren Sie sie und verwenden Sie sie

Hinweis: Diese App kann im Laufe der Zeit ersetzt werden, aber es besteht die Möglichkeit, dass es ein anderes Tool gibt, das dasselbe tut. 

0
J Wood