D:\temp>xsd test.xmlMicrosoft(R)XmlSchemas/DataTypes support utility[Microsoft(R).NET Framework,Version4.0.30319.1]Copyright(C)MicrosoftCorporation.All rights reserved.Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classesMicrosoft(R)XmlSchemas/DataTypes support utility[Microsoft(R).NET Framework,Version4.0.30319.1]Copyright(C)MicrosoftCorporation.All rights reserved.Writing file 'D:\temp\test.cs'.
Ich wünsche mir nur, dass diese automatisch implementierten Eigenschaften generiert werden, wie dies beim Einfügen von JSON als Klassen der Fall ist. Derzeit bedeutet dies ein 6-fach aufgeblähtes Code-Ergebnis, das viel schwerer zu lesen ist. Das allein lässt mich leider nach einem anderen Werkzeug suchen.
Nicholas Petersen
1
Wurde dies von VS 2013 weggelassen?
Roger
3
@ Roger Ich habe VS 2013 nicht verwendet, aber ich denke, diese Funktion sollte vorhanden sein.
Stellen Sie
2
Dies ist viel schneller als xsd, aber die Ausgabe ist ungefähr gleich.
Jess
4
Wenn Sie keinen Resharper haben, verwenden Sie Regex und ersetzen Sie ihn durch public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n=> public $1 $2 { get; set; }und `private \ w + \ w + Field; \ r \ n \ r \ n`
AlexDev
44
Zuerst dachte ich, das Paste Special sei der heilige Gral! Aber dann habe ich es versucht und meine Haare wurden weiß, genau wie im Indiana Jones-Film.
Die Ausgabe dieses Tools ist nett, aber ich möchte nur ein Wort der Vorsicht walten lassen, um keine sensiblen Daten an diese Site (oder andere in dieser Angelegenheit) zu senden. Obwohl ich den angebotenen Service sehr schätze, gibt es keine Datenschutzrichtlinie und wenig bis gar keine Garantie dafür, dass das, was Sie einfügen, nicht protokolliert und überprüft wird usw.
SvenAelterman
2
Ich hatte eine XML-Datei mit einigen rekursiven Beziehungen (vielleicht heißt sie Kreisbeziehung , ich bin mir nicht sicher). Die anderen sind fehlgeschlagen, aber xmltocsharp.azurewebsites.net war auf dieser XML sehr erfolgreich.
Koray
4
@ D.Kermott danke für den Website-Link, ich habe ihn mir kurz angesehen und es sieht so aus, als ob er einen viel besseren Job macht als das Paste-Special. Der Code sieht sauberer aus, obwohl meine Test-XML mehr Klassen erstellt hat, war es viel schöner zu bedienen.
Harag
Schade, dass es scheint, die Reihenfolge der Klassen umzukehren (außerhalb der zuletzt aufgeführten Elemente)
Savage
22
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 Route "xml -> xsd -> classes" war für mich, dass sie nur einen Codeklumpen erzeugte, der völlig nicht zu warten war, und dass ich ihn schließlich auf den Rasen legte.
Es ist in keiner Weise elegant, aber es hat den Job für mich gemacht.
Sie können es hier bekommen: Bitte machen Sie Vorschläge, wenn es Ihnen gefällt.
erzeugt falschen Code: // ELEMENTS [XmlIgnore] public DateTime Value {get; einstellen; } [XmlText] öffentlicher String ValueString {get {return Value? "wahr falsch"; } set {Value = value == "true"; }}
André Fiedler
Und die Konstruktoren sind unnötig + Sie sollten Kommentare für öffentlich sichtbare Mitglieder
André Fiedler
1
Zu meiner Verteidigung war es etwas, das ich sehr schnell zusammengeschlagen habe, was für mich funktioniert hat. Ich bin nicht darauf zurückgekommen, kann aber gerne Änderungen am Repo vornehmen.
Talon
Ich benutze dies seit einigen Monaten - es ist nicht perfekt, aber es ist sehr nützlich und ich finde, dass es viel besser lesbares / einfacheres XML generiert als das Einfügen von VS2013 als XML. Sehr geschätzter Talon.
Codechinchilla
6
Sie sollten svcutil berücksichtigen ( svcutil Frage )
Sowohl xsd.exe als auch svcutil arbeiten mit der XML-Schemadatei (.xsd). Ihr XML muss einer Schemadatei entsprechen, die von einem dieser beiden Tools verwendet werden kann.
Beachten Sie, dass hierfür auch verschiedene Tools von Drittanbietern vorhanden sind.
Sie können xsd verwenden, wie von Darin vorgeschlagen.
Darüber hinaus wird empfohlen, die Datei test.xsd zu bearbeiten, um ein vernünftigeres Schema zu erstellen.
type="xs:string"kann type="xs:int"für ganzzahlige Werte minOccurs="0"geändert werden. kann geändert werden, minOccurs="1"wo das Feld benötigt wird. maxOccurs="unbounded"kann geändert werden, maxOccurs="1"wo 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 in der generierten c #.
Antworten:
Ja, mit xsd.exe
Anmerkungen
Die Beantwortung des Verzeichnisses in der Entwickler-Eingabeaufforderung in d: \ temp kann hilfreich sein.
Wenn Sie Klassen für mehrdimensionale Arrays generieren, gibt es einen Fehler im XSD.exe-Generator, aber es gibt Problemumgehungen .
quelle
xsd
die ausführen Entwickler Eingabeaufforderung für VS2013 unter dem Tools - Menü.xsd.exe
finden Sie unter:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
wurde gefunden bei:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Wenn Sie auf .NET 4.5 Projekt in VS 2012 (oder neuer) arbeiten, können Sie einfach einfügen Ihre XML - Datei als Klassen.
EDIT > Paste Special > Paste XML As Classes
quelle
xsd
, aber die Ausgabe ist ungefähr gleich.public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=>public $1 $2 { get; set; }
und `private \ w + \ w + Field; \ r \ n \ r \ n`Zuerst dachte ich, das Paste Special sei der heilige Gral! Aber dann habe ich es versucht und meine Haare wurden weiß, genau wie im Indiana Jones-Film.
Aber jetzt benutze ich http://xmltocsharp.azurewebsites.net/ und jetzt bin ich so jung wie immer.
Hier ist ein Ausschnitt dessen, was es generiert hat:
quelle
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 Route "xml -> xsd -> classes" war für mich, dass sie nur einen Codeklumpen erzeugte, der völlig nicht zu warten war, und dass ich ihn schließlich auf den Rasen legte.
Es ist in keiner Weise elegant, aber es hat den Job für mich gemacht.
Sie können es hier bekommen: Bitte machen Sie Vorschläge, wenn es Ihnen gefällt.
SimpleXmlToCode
quelle
Sie sollten svcutil berücksichtigen ( svcutil Frage )
Sowohl xsd.exe als auch svcutil arbeiten mit der XML-Schemadatei (.xsd). Ihr XML muss einer Schemadatei entsprechen, die von einem dieser beiden Tools verwendet werden kann.
Beachten Sie, dass hierfür auch verschiedene Tools von Drittanbietern vorhanden sind.
quelle
Sie können xsd verwenden, wie von Darin vorgeschlagen.
Darüber hinaus wird empfohlen, die Datei test.xsd zu bearbeiten, um ein vernünftigeres Schema zu erstellen.
type="xs:string"
kanntype="xs:int"
für ganzzahlige WerteminOccurs="0"
geändert werden. kann geändert werden,minOccurs="1"
wo das Feld benötigt wird.maxOccurs="unbounded"
kann geändert werden,maxOccurs="1"
wo nur ein Element zulässig istSie können erweiterte xsd-s erstellen, wenn Sie Ihre Daten weiter validieren möchten. Dies gibt Ihnen jedoch zumindest angemessene Datentypen in der generierten c #.
quelle
Verwenden Sie die folgende Syntax, um eine Schemaklasse aus einer XSD-Datei zu erstellen.
quelle
So konvertieren Sie XML in eine C # -Klasse:
Hinweis: Im Laufe der Zeit wird diese App möglicherweise ersetzt, aber es besteht die Möglichkeit, dass es ein anderes Tool gibt, das das Gleiche tut.
quelle