webentwicklung-frage-antwort-db.com.de

Wie erstelle ich ein XSD-Schema aus einer Klasse?

Ich habe es schwer mit den XSD-Dateien.

Ich versuche, eine XSD-Datei aus einer Klasse zu erstellen:

public enum Levels { Easy, Medium, Hard }
public sealed class Configuration
{
    public string Name { get;set; }
    public Levels Level { get; set; }
    public ConfigurationSpec { get;set;}
}

public abstract class ConfigurationSpec { }
public class ConfigurationSpec1
{
    // ...
}
public class ConfigurationSpec2
{
    // ...
}

Bitte beachten Sie, dass ich eine abstrakte Klasse innerhalb der Konfiguration habe. Ist es mit dieser Funktion möglich, die XSD zu erstellen und wenn möglich, wie?

Die Idee ist, die Klassenkonfiguration an das XSD zu übergeben.

49
Darf Zon

Sie können XSD.exe (Verfügbar in Ihrer Visual Studio-Installation.)

public sealed class Configuration
{
 public string Name { get; set; }
 public Levels Level { get; set; }
 public ConfigurationSpec Spec { get; set; }
}
 public abstract class ConfigurationSpec { }
 public class ConfigurationSpec1    {   }
public class ConfigurationSpec2 {   }

ergebnisse in

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Levels" type="Levels" />
  <xs:simpleType name="Levels">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Easy" />
      <xs:enumeration value="Medium" />
      <xs:enumeration value="Hard" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Configuration" nillable="true" type="Configuration" />
  <xs:complexType name="Configuration">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="Level" type="Levels" />
      <xs:element minOccurs="0" maxOccurs="1" name="Spec" type="ConfigurationSpec" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ConfigurationSpec" abstract="true" />
  <xs:element name="ConfigurationSpec" nillable="true" type="ConfigurationSpec" />
  <xs:element name="ConfigurationSpec1" nillable="true" type="ConfigurationSpec1" />
  <xs:complexType name="ConfigurationSpec1" />
  <xs:element name="ConfigurationSpec2" nillable="true" type="ConfigurationSpec2" />
  <xs:complexType name="ConfigurationSpec2" />
</xs:schema>

Alles was Sie tun müssen, ist Ihre Assembly zu kompilieren und XSD.exe mit dem Pfad zu Ihrer Assembly als Argument. XSD.exe /? hat auch eine Liste aller Argumente.

Beispiel: XSD.exe C:\Dev\Project1\Bin\Debug\library.dll

34
Alex

Sie können erfolgreich xsd.exe In Visual Studio integrieren IDE wie folgt:

Gehen Sie in Tools, External Tools Und klicken Sie auf Add Taste:

2010

enter image description here

2015/2017

enter image description here

Titel:

Schema aus Klasse erstellen

Befehl (pro Framework):

4.0

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\xsd.exe

4.5.1

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\xsd.exe

4.6.*

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.* Tools\x64\xsd.exe

Argumente:

$(BinDir)$(TargetName).dll /outputdir:$(ItemDir) /type:$(ItemFileName)

Ausgabefenster verwenden:

Verhindert, dass ein zusätzliches Befehlsfenster angezeigt wird, und zeichnet die Ausgabe auf, bis Sie sie löschen. Wahrscheinlich eine gute Idee.

Aufforderung zur Eingabe von Argumenten:

Überprüfen Sie, ob Sie die Ausgabe testen oder Fehler beheben möchten. Andernfalls lassen Sie das Kontrollkästchen deaktiviert.

Klicken OK

Wie benutzt man:

  1. Kompilieren Sie Ihr Projekt! XSD.exe Betrachtet nur kompilierten Code.
  2. Klicken Sie im Projektmappen-Explorer auf die Klasse .
  3. Klicken Sie auf Tools, Create Schema From Class
  4. Klicke auf das Show All Files Schaltfläche im Projektmappen-Explorer .
  5. Schauen Sie in den gleichen Ordner wie Ihre Klasse und Sie werden Schema0.xsd Sehen.
  6. Klicken Sie mit der rechten Maustaste auf Schema0.xsd Und wählen Sie Include In Project
  7. Benenne Schema0.xsd In <the name of the class>.xsd Um
  8. (Optional) Sie müssen dieses neue xsd möglicherweise manuell bearbeiten, wenn Sie XML-Dateien im XML-Editor mit diesem Schema bearbeiten möchten und nicht alle Attribute verwenden. Sie können use="required" Durch use="optional" Ersetzen, um die blauen, wellenförmigen Linien im XML-Editor (die Warnungen erzeugen) zu entfernen, wenn diese Attribute tatsächlich nicht benötigt werden.
79
toddmo