Code Generator
XMLSpy enthält einen integrierten Code Generator, der Java-, C++- oder C#-Klassendateien anhand von XML-Schemas generieren kann. Der generierte Code besteht aus stark typisierten Schema Wrapper-Bibliotheken, mit Hilfe derer Sie Software-Applikationen zur Verarbeitung von XML-Daten erstellen können. Mit Hilfe der Schema Wrapper-Bibliotheken können Sie über Programme mit XML-Daten arbeiten und dabei anhand des Schemas generierte Typen verwenden. Normalerweise würde der Code Generator folgendermaßen verwendet werden: Zuerst wird im grafischen Schema-Editor (Schema-Ansicht) von XMLSpy das XML-Schema modelliert. Anschließend wird Code in der Codesprache Ihrer Wahl (Java, C++ oder C#) generiert. Wenn Sie das Content Model des Schemas ändern, muss der Code Generator erneut ausgeführt werden.
Der generierte Code unterstützt die folgenden Operationen:
•Lesen von XML-Dateien in eine speicherresidente Document Object Model (DOM)-Darstellung
•Schreiben von XML-Dateien aus einer DOM-Darstellung zurück in eine Systemdatei
•Konvertieren von Strings in XML-DOM-Strukturen und umgekehrt
Die nachstehende Tabelle enthält einen Überblick über die unterstützten Umgebungen
Zielsprache | C++ | C# | Java |
---|---|---|---|
Entwicklungsumgebungen | Microsoft Visual Studio 2013, 2015, 2017, 2019, 2022 | Microsoft Visual Studio 2013, 2015, 2017, 2019, 2022
Ziel-Frameworks:
•.NET Framework •.NET Core 3.1 •.NET 5.0 •.NET 6.0 •.NET 8.0 | Java SE JDK 8, 11, 17, 21 (einschließlich OpenJDK) Eclipse 4.4 oder höher Apache Ant (build.xml-Datei) |
XML DOM Implementierungen | MSXML 6.0 Apache Xerces 3 | System.Xml | JAXP |
Sprachspezifische Informationen
In den folgenden Unterabschnitten finden Sie sprachspezifische Informationen.
C++
Sie können konfigurieren, ob der generierte C++-Ausgabecode MSXML 6.0 oder Apache Xerces 3 verwenden soll. Bei der C++-Codegenerierung werden in XMLSpy komplette Projekt- (.vcproj) und Solution- (.sln)-Dateien für alle unterstützten Versionen von Visual Studio (siehe Tabelle oben) generiert. Der generierte Code unterstützt optional MFC.
Beachten Sie dabei die folgenden Voraussetzungen:
•Für die Kompilierung des generierten C++-Codes muss Windows SDK auf Ihrem Rechner installiert sein.
•Um Xerces 3 für C++ verwenden zu können, müssen Sie es nach der Anleitung auf der Apache Xerces-Seite installieren und bauen. Dabei muss die Umgebungsvariable XERCES3, die auf das Verzeichnis verweist, in dem Xerces installiert wurde, hinzugefügt werden (z.B. C:\xerces-c-3.2.2). Außerdem muss die Umgebungsvariable PATH den Pfad inkludieren, unter dem sich die Xerces-Binärdateien befinden (z.B. %XERCES3%\bin).
•Beim Erstellen von C++-Code für Visual Studio und bei Verwendung einer für Visual C++ vorkompilierten Xerces-Bibliothek muss die Compiler-Einstellung in allen Projekten der Projektmappe geändert werden. Gehen Sie folgendermaßen vor:
a)Wählen Sie alle Projekte im Solution Explorer aus.
b)Klicken Sie im Menü Projekt auf Eigenschaften.
c)Klicken Sie auf Konfigurationseigenschaften | C/C++ | Sprache.
d)Wählen Sie in der Liste der Konfigurationen Alle Konfigurationen.
e)Ändern Sie Treat wchar_t as Built-in Type in No (/Zc:wchar_t-).
C#
Der generierte C#-Code kann von jeder .NET-fähigen Programmiersprache verwendet werden, z.B. VB.NET, Managed C++ oder J#. Projektdateien können für alle unterstützten Versionen von Visual Studio generiert werden (siehe Tabelle oben).
Java
Der generierte Java-Code wird anhand der "Java API for XML Processing" (JAXP) geschrieben und enthält eine Ant build-Datei sowie Projektdateien für die unterstützten Versionen von Java und Eclipse (siehe Tabelle oben).
Behebung von Ausnahmeereignissen im Zusammenhang mit zu wenig Arbeitsspeicher bei der Java-Kompilierung
Es kommt vor, dass durch komplexe Schemas eine so große Menge von Code generiert wird, dass es bei der Kompilierung in Ant zu einem java.lang.OutofMemory-Ausnahmeereignis kommt. Um dieses Problem zu beheben:
•Fügen Sie die Umgebungsvariable ANT_OPTS hinzu. Damit werden bestimmte Ant-Optionen festgelegt, wie z.B. wie viel Arbeitsspeicher dem Compiler zur Verfügung steht. Sie können die Werte wie unten gezeigt definieren.
•Um sicherzustellen, dass der Compiler und der generierte Code im selben Prozess wie Ant ausgeführt wird, ändern Sie das Attribut fork in der Datei build.xml in false um.
Je nach verfügbarem Arbeitsspeicher auf Ihrem Computer und je nach Projektgröße müssen Sie diese Werte eventuell anpassen. Nähere Informationen finden Sie in der Java VM-Dokumentation.
Bei der Ausführung des ant jar-Befehls wird eventuell eine Fehlermeldung angezeigt, dass "[...] das Archiv mehr als 65535 Einheiten enthält". Damit diese Fehlermeldung nicht auftritt, wird empfohlen, Versionen ab Ant 1.9 zu verwenden und in der Datei build.xml zum Element <jar> zip64mode="as-needed" hinzuzufügen. |
Generierte Ausgabe
Der Zielordner für den generierten Code enthält alle zum programmatischen Bearbeiten von XML-Dateien erforderlichen Bibliotheken und Dateien. Es sind dies die folgenden:
•Altova Standardbibliotheken
•Schema Wrapper-Bibliotheken
•Eine leere Testapplikation mit Beispielquellcode. Das Applikationsgerüst der Testapplikation ist eine kompilierbare Applikation, die eine leere Example()-Methode aufruft. Sie können in dieser Methode Ihren Testcode hinzufügen, um Ihre neu generierte Bibliothek schnell und einfach testen zu können.
Code Generator-Vorlagen
Der generierte Code wird über eine in einer Vorlagensprache namens SPL (Spy Programming Language) geschriebene Vorlage gebaut. Sie können die für die Codegenerierung verwendete Vorlage anpassen. So können Sie etwa mit Hilfe von SPL die vordefinierten Datentypen von XML-Schemas auf die primitiven Datentypen einer bestimmten Programmiersprache mappen und Ihre eigenen Vorlagen erzeugen, um die Generierung praktisch jedes beliebigen anderen Formats wie EJB's, WSDL-Dateien, SQL Scripts, ASP und WML-Code zu automatisieren.
Beispiele
Beispiele zur Codegenerierung finden Sie unter Beispiel: Book Library und Beispiel: Bestellung.