2009-07-01 8 views
4

Ich möchte die Klassen die xsd.exe Weg und nicht die linq gifs Weg generieren.Wie programmgesteuert generieren .NET-Klassen von XSD? (Wie xsd.exe tun)

Danke, --Ran.

+1

Warum sollten Sie xsd.exe nicht verwenden? – Groo

+0

Vielleicht will nicht, was ist es für dich? – leppie

+1

@leppie: es würde die Anforderungen klären. Hat er zum Beispiel eine Beschränkung, externe Programme nicht anzurufen? Um Microsoft-Programme nicht zu verwenden? –

Antwort

10

Betrachten Sie die Klasse System.Xml.Serialization.XmlCodeExporter.

UPDATE (bei John Saunders didnt Mühe weiter zu lesen)

"Xsd.exe verwendet XmlCodeExporter zu erzeugen Klassen von XML Schema Definition (XSD) Dokumente."

+0

"Diese API unterstützt die .NET Framework-Infrastruktur und ist nicht dazu gedacht, direkt von Ihrem Code aus verwendet zu werden" –

+1

Ich benutze es seit 1.1, gibt es ein Problem damit? – leppie

+0

"ist nicht zur Verwendung gedacht" bedeutet nicht "kann nicht verwendet werden";) –

1

Welchen Teil des Prozesses wissen Sie nicht?

Sie können eine oder mehrere Instanzen der XmlSchema-Klasse in eine XmlSchemaSet laden. Dadurch können Sie alle Teile des Schemas und andere Schemas, auf die verwiesen wird, programmatisch untersuchen. Sie können diese Informationen verwenden, um Code zu generieren, entweder als Text, der später kompiliert werden muss, oder mithilfe von CodeDOM. Siehe Dynamic Source Code Generation and Compilation.

Wenn Sie Code im Kontext von Visual Studio generieren, dann schlage ich vor, Sie tun dies über T4-Vorlagen. Siehe Generating Artifacts By Using Text Templates.

+0

Fällig Aufgrund der Komplexität von XML Schema wäre es ein Albtraum, um es gelinde auszudrücken, es selbst zu analysieren und die Klassen daraus zu generieren. – Ran

+0

Ich habe nicht vorgeschlagen, dass Sie es selbst analysieren. Sie laden ein einzelnes Schema mithilfe von XmlSchema.Load und fügen dann das Ergebnis einem XmlSchemaSet hinzu. Fügen Sie alle Schemas hinzu, die Sie für diesen Satz benötigen, und Sie können sie dann "kompilieren", um sie zu validieren und Querverweise zu korrigieren. Schließlich können Sie die Struktur durchlaufen und Ihren Code generieren. –

+0

Es tut mir leid, ich wollte sagen, dass ich die Struktur laufen lasse (nicht analysiere). Ich weiß nicht, wie sehr Sie mit der SOM- oder XML-Schema-Spezifikation vertraut sind. aber es ist eine große und ziemlich komplizierte Aufgabe, Code aus einem XML-Schema zu erzeugen (selbst wenn man bedenkt, dass man nur eine Teilmenge der XML-Schemaspezifikation unterstützen sollte, die gerade übersetzt werden könnte) das ist, warum ich lieber re - Benutze Code für diese Angelegenheit. – Ran

3

Sie können xsd.exe von Ihrem Code mit Process Class aufrufen. Ich habe es einmal gemacht und es ist schnell und unkompliziert. Sie müssen nicht viel gelangweilt sein :).

5

Versuchen Xsd2Code

Scheint da draußen das beste kostenlosen/Open-Source-Tool zu sein.

Gute Integration mit VS2010

Es funktioniert gut für mich.

Verwandte Themen