2009-03-08 5 views
7

Ich habe mithilfe des Visual Studio XSD-Hilfsprogramms einige C# -Klassen aus einer XSD generiert und Arrays zum Speichern einer Sammlung von Elementen anstelle einer der integrierten generischen Sammlung < T generiert > (oder verwandte) Klassen.Visual Studio XSD-Tool: Erstellen von Sammlungen anstelle von Arrays

Keiner der Kommandozeilenparameter in xsd /? Erwähnen Sie etwas über das Generieren von Sammlungen anstelle von Arrays, aber ich weiß, dass dies mit Web-Service-Proxy-Klassen geschehen kann, die von Visual Studio generiert werden, also dachte ich, dass es möglich sein muss.

Weiß jemand, wie das XSD-Dienstprogramm Sammelklassen statt Arrays generieren kann?

+0

Sie können meine Antwort hier finden -> http://Stackoverflow.com/a/24557248/1125467 – vivekp

Antwort

1

Das Problem ist, dass XSD XML-Sprache Agnostiker ist. Es kann nichts von Java oder C# verwenden, das der andere nicht unterstützt. Arrays sind der kleinste gemeinsame Nenner.

Java-Entwickler verwenden OXM-Bibliotheken wie XStream, um Objekte zu XML und zurück zu marshalieren. Sie können benutzerdefinierte Typen angeben, wenn Sie von Objekten zu XML wechseln. Klingt so, als müssten Sie in der .NET-Toolbox etwas Ähnliches finden.

Dies ist keine Antwort auf Ihre Frage, aber es ist der Grund, warum ich denke, dass XSD nicht die Arbeit machen wird. Wie ein Java-Entwickler, der nach XStream greift, müssen Sie sich woanders umsehen.

1

Sie haben gesehen, dass Sammlungen mit Serviceverweisen und nicht mit Webreferenzen verwendet werden können. Sehen Sie sich stattdessen das Dienstprogramm svcutil.exe an. Es sieht aus wie Svcutil/t: Code file.xsd könnte dies für Sie tun.

1

Mir sind zu dieser Zeit keine Werkzeuge bekannt, die das zuverlässig machen, leider.

Es gab eine XSDObjectGen (oder so ähnlich), aber das Werkzeug scheint aus dem Gesicht des Cyberspace verschwunden sein :-(

Ich sah ein Ansatz XSDTidy verwendet eine Art Ersatz aller int anzuwenden [] in Liste über die Ausgabe des Werkzeugs XSD - scheint funktioniert zu haben, aber ein bisschen klobig schien

Hier ist ein CodeProject article on XSDTidy

Das, was ich wieder eine Blog-Post zu finden habe versucht, durch.. ein Gentleman, der die inneren Funktionen von XSD in Reflector im Grunde genommen seziert und dann das Wissen, das er daraus gewonnen hat, benutzt hat Erstellen Sie ein eigenes Tool mit vielen .NET-Kernklassen. Wenn ich mich richtig erinnere, war es this blog post here ("writing your own xsd.exe"). Mike tut nicht genau das, wonach Sie suchen (Erstellen von Listen anstelle von Arrays), aber es könnte ein Ausgangspunkt sein.

Marc