2009-04-19 20 views
14

Mit JAXB in Java ist es einfach, aus einer XML-Schemadatei eine Menge von Java-Klassen zu erzeugen, auf die xml, die diesem Schema entsprechen, deserialisiert werden kann.Jaxb-Äquivalent in C#

Gibt es C# -Aquivalent von JAXB? Ich weiß, dass Linq Klassen zu/von XML-Dateien serialisieren und deserialisieren kann. Aber wie kann ich C# -Klassen aus XML-Schemadateien generieren und diese Klassen dann mit linq verwenden?

Antwort

15

Wenn Sie Visual Studio verwenden, versuchen Sie XML Schema Definition Tool. Es nimmt Ihre Schemadefinitionen und erzeugt C# -Klassen - oder es kann umgekehrt gehen und Schemendefinitionen aus Klassen erzeugen. Es hat auch eine Reihe anderer XML-verwandter Transformationen.

+0

Tatsächlich kann XSD Klassen in C#, VB.NET, JScript oder C++ generieren. Siehe den Schalter/Sprache. –

+0

Sorry, ich wollte damit nicht andeuten, dass es nicht geht. Seine Frage betraf nur C# -Klassen. Aber ja, der/Sprache Schalter ist praktisch. –

+3

Sie müssen Visual Studio nicht haben. XSD.EXE ist Teil des .NET SDK. –

4

Es gibt ein besseres Werkzeug von Microsoft namens XsdObjectGen, der XSD Object Code Generator. Es ist wie xsd.exe, aber besser. Auch kostenlos, ist es nicht Teil des .NET SDK, sondern ist ein separater Download.

Siehe auch die Frage SO: XSDObjectGen vs Xsd.exe

1

Blick in DataSet verwenden. Es ist ein etwas anderes Konzept als die Verwendung von "Java Beans". Das gesamte XML-Dokument wird als hierarchischer Satz von Tabellen in einer einzigen Klasse behandelt. Der gute Teil ist, dass Theorie der Kapselung für OOP tatsächlich durchgesetzt wird. Wow, Microsoft hat etwas richtig gemacht, dass Sun pochierte.

Wie auch immer. Sie können sich auch typisierte DataSets ansehen, wenn Sie die Dinge interessanter machen möchten. Ich habe das bei großen Projekten mit großem Erfolg genutzt.