Kann ich eine C # -Klasse aus einer XML-Datei erstellen?
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 .
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.
EDIT > Paste Special > Paste XML As Classes
aus. 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; }
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.
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.
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 werdenminOccurs="0"
kann in minOccurs="1"
geändert werden, wo das Feld erforderlich istmaxOccurs="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 #.
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\
So konvertieren Sie XML in eine C # -Klasse:
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.