Gibt es eine Möglichkeit, ein XSD-Schema aus einem DataContract zu exportieren

8

Ich verwende DataContractSerializer, um meine Klassen zu / von XML zu serialisieren / deserialisieren. Alles funktioniert gut, aber irgendwann möchte ich ein Standardschema für das Format dieser XML-Dateien erstellen, unabhängig vom eigentlichen Code. Auf diese Weise kann ich, wenn im Serialisierungsprozess etwas kaputt geht, immer zurückgehen und prüfen, was das Standardschema sein sollte. Oder wenn ich das Schema ändern muss, ist die Änderung eine explizite Entscheidung und nicht nur ein späterer Effekt, meinen Code zu modifizieren.

Darüber hinaus schreiben andere möglicherweise andere Software, die möglicherweise nicht .NET-basiert ist und aus diesen XML-Dateien lesen müsste. Ich würde gerne in der Lage sein, ihnen eine Art Dokumentation des Schemas zur Verfügung zu stellen.

Gibt es eine Beziehung zwischen einem DataContract- und einem XSD-Schema? Gibt es eine Möglichkeit, die DataContract-Attribute in Klassen als XSD-Schema zu exportieren?

    
Eric Anastas 08.04.2010, 23:02
quelle

3 Antworten

4

Svcutil.exe kann Metadaten für kompilierte Datenverträge exportieren .
Es gibt eine Beziehung zwischen DataContract und XSD :

  

Der DataContractSerializer ordnet CLR-Typen der XSD zu, wenn Metadaten aus einem Windows Communication Foundation (WCF) -Dienst mithilfe eines Metadatenendpunkts oder des ServiceModel-Hilfsprogramms für Metadaten (Svcutil.exe) exportiert werden. Weitere Informationen finden Sie unter Data Contract Serializer.

     

Der DataContractSerializer ordnet auch XSD CLR-Typen zu, wenn Svcutil.exe verwendet wird, um auf WSDL- (Web Services Description Language) oder XSD-Dokumente zuzugreifen und Datenverträge für Dienste oder Clients zu generieren.

Sie können die XSDs zur Laufzeit auch in Ihrem Browser von beziehen Einrichten eines MEX-Endpunkts .
Die WSDL enthält standardmäßig Verweise auf XSD (s), auf die auch über den Endpunkt zugegriffen werden kann.

    
Andras Vass 08.04.2010, 23:16
quelle
7

Ja, Sie können XsdDataContractExporter verwenden.

Ein Beispiel finden Sie im MSDN-Artikel Schemas aus Klassen exportieren .

    
Alex Angas 02.05.2013 07:23
quelle
3

Sie können möglicherweise Schemadateien von DataContracts mithilfe des Tools svcutil.exe generieren, das mit Visual Studio geliefert wird.

%Vor%

Ich glaube, ich habe das einmal in der Vergangenheit durcheinander gebracht, und vielleicht habe ich es zur Arbeit gebracht. Eine weitere einfache Möglichkeit zum Generieren von Schemas besteht darin, einen WCF-Dienst aufzustellen, der Ihre Datenverträge verwendet, und auf die WSDL zuzugreifen. Die WSDL importiert alle xsds für die DataContracts.

    
Andy White 08.04.2010 23:16
quelle

Tags und Links