2016-06-30 16 views
0

Ich arbeite an einem Projekt, das (externe) Dienste verbraucht.Konvertieren von XSD-Schemas in Klassen

Der Anbieter hat einen ganzen Haufen von XSDs (89 von ihnen) zur Verfügung gestellt und ich möchte die alle in.Net (C#) Klassen/Klassenbibliothek konvertieren.

ich die XSD-Dienstprogramm verwende auf diese aber, da es viele Querverweise und importieren, sie scheitern mit Fehlermeldungen type 'xxxxx' not declared sagen

Nun basiert meine meine googeln, ist dies ganz einfach überwinden, indem Kompilieren der vollständige Referenz „Baum“ aber ....

  1. I 89 Dateien
  2. konvertieren Es verkettet die alle Schemanamen zusammen für die Ausgabe CS- Name zu lang Datei (und Pausen, da auf sie (> 260 Zeichen))

Ich dachte über das Erstellen einer Klassenbibliothek Assembly, beginnend mit den Basisschemata (ohne Importe) und dann sagen XSD ein Schema zu konvertieren, aber alle referenzierten Typen aus dieser Baugruppe verwenden ... aber ich bin mir nicht sicher, wie oder auch wenn es möglich ist.

Also, wie kann ich am besten tun Sie dies bitte ... jeder Beratung ist willkommen ..

Und ja, 89 Schemata sind viel und leider, ich habe keine Kontrolle darüber, ich muss es nur saugen und damit umgehen.

+0

Ich brauche wirklich eine Probe von xml, um zu sehen, wo Code fehlschlägt. Wenn ein Typ in der XML-Serialisierung verwendet wird, bedeutet dies normalerweise, dass eine geerbte Klasse existiert. Um die XML-Serialisierung zu testen, erstelle ich normalerweise eine Testklasse mit Daten und serialisiere die Daten in eine Datei. Dann kehren Sie den Prozess um und demerialisieren Sie die Daten. Sie können dann die XML-Datei serialisieren mit Ihrer tatsächlichen vom Lieferanten gelieferten XML-Datei vergleichen. – jdweng

+0

Nicht XML ... XSD .... Der Titel der Frage kann dazu führen, dass die Mehrdeutigkeit geändert wurde –

+0

Haben Sie den Link ".asmx" oder ".wsdl" zum Dienst? Wenn ja, dann versuchen Sie, Klassen zu generieren, indem Sie 'Service Reference ...' im VS Solution Explorer hinzufügen. –

Antwort

0

Sie können /P[arameters]:file.xmloption in xsd.exe verwenden, um viele Parameter in einer separaten Datei anzugeben, anstatt sie in der Befehlszeile zu übergeben.

Probe dieses xml:

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'> 
    <generateClasses language='CS' namespace='MyNamespace'> 
     <schema>FirstSchema.xsd</schema> 
     <schema>SecondSchema.xsd</schema> 
     <schema>ThirdSchema.xsd</schema> 
    </generateClasses> 
</xsd>