Java-Beispielprojekt
Das XMLSpy-Installationspaket enthält ein Java-Beispielprojekt, das Sie im Unterordner API\Java des Ordners Examples finden:
Windows 7, Windows 8, Windows 10, Windows 11 | C:\Benutzer\<Benutzername>\Dokumente\ |
Dieser Ordner enthält Java-Beispiele für die XMLSpy API. Sie können das Beispielprojekt mit Hilfe der Batch-Datei BuildAndRun.bat, direkt über die Befehlszeile testen oder Sie können es in Eclipse kompilieren und ausführen. Anleitungen dafür finden Sie weiter unten.
Dateiliste
Der Ordner für die Java-Beispiele enthält alle zum Ausführen des Beispielprojekts erforderlichen Dateien. Diese Dateien sind unten aufgelistet. Wenn Sie eine 64-Bit-Version der Applikation verwenden, enthalten einige Dateinamen _x64. Diese Dateinamen sind mit (_x64) gekennzeichnet.
AltovaAutomation(_x64).dll | Java-COM Bridge: DLL-Teil |
AltovaAutomation.jar | Java-COM Bridge: Java-Bibliotheksteil |
XMLSpyAPI.jar | Java-Klassen der XMLSpy API |
RunXMLSpy.java | Java-Beispielquellcode |
BuildAndRun.bat | Batch-Datei zum Kompilieren und Ausführen des Beispielcodes über die Befehlszeile. Es wird ein Ordner benötigt, in dem sich die Java Virtual Machine als Parameter befindet. |
.classpath | Hilfedatei Eclipse-Projekt |
.project | Eclipse-Projektdatei |
XMLSpyAPI_JavaDoc.zip | Javadoc Datei, die die Hilfedokumentation für die Java API enthält |
Funktionen in diesem Beispiel
In diesem Beispielprojekt wird XMLSpy gestartet und einige Operationen wie das Öffnen und Schließen von Dokumenten werden ausgeführt. XMLSpy bleibt danach geöffnet. Sie müssen die Applikation manuell schließen.
•XMLSpy starten: Startet XMLSpy, das als Automation Server registriert ist, bzw. aktiviert das Programm, wenn XMLSpy bereits ausgeführt wird.
•OrgChart.pxf öffnen: Navigiert zu einem der mit XMLSpy installierten Beispieldokumente und öffnet es.
•Iterieren durch und Ändern des Ansichtsmodus: Wechselt von der Ansicht aller offenen Dokumente in die Textansicht. Im Code wird auch gezeigt, wie man durch offene Dokumente iteriert.
•Iteration, Validierung und Ausgabeparameter: Validiert das aktive Dokument und zeigt das Ergebnis in einem Meldungsfeld an. Im Code wird gezeigt, wie Ausgabeparameter verwendet werden.
•Event-Behandlung: Zeigt, wie XMLSpy Events behandelt werden.
•XMLSpy beenden: Beendet XMLSpy.
Sie können das Beispiel beliebig modifizieren und es ausführen.
Ausführen des Beispiels über die Befehlszeile
Um das Beispiel von der Befehlszeile aus auszuführen, öffnen Sie ein Eingabeaufforderungsfester, gehen Sie zum Ordner Java des Ordners API Examples (Pfad siehe oben) und geben Sie folgende Zeile ein:
buildAndRun.bat "<Path-to-the-Java-bin-folder>"
Der Java Binary-Ordner muss von einer JDK 14 oder höheren Version auf Ihrem Rechner sein. Drücken Sie die Eingabetaste. Der Java-Quellcode in RunXMLSpy.java wird kompiliert und anschließend ausgeführt.
Laden des Beispiels in Eclipse
Öffnen Sie Eclipse und wählen Sie den Befehl Import | Existing Projects into Workspace um die Eclipse-Projektdatei (.project) im Ordner Java des Ordners API Examples (Pfad siehe oben) zu Eclipse hinzuzufügen. Daraufhin wird das Projekt RunXMLSpy in Ihrem Package Explorer oder Navigator angezeigt. Wählen Sie das Projekt aus und klicken Sie anschließend auf Run as | Java Application um das Beispiel auszuführen.
Anmerkung: | Sie können einen Klassennamen oder eine Methode der Java API auswählen und F1 drücken, um Hilfe zu dieser Klasse oder Methode zu erhalten. |
Java-Quellcode
Im Folgenden finden Sie den mit Kommentaren versehenen Java-Quellcode aus der Beispieldatei RunXMLSpy.java.
001 // Access general JAVA-COM bridge classes
002 import com.altova.automation.libs.*;
003
004 // Access XMLSpy Java-COM bridge
005 import com.altova.automation.XMLSpy.*;
006 import com.altova.automation.XMLSpy.Enums.SPYViewModes;
007
008 /**
009 * An example that starts XMLSpy COM server and performs view operations on it
010 * Feel free to extend
011 */
012 public class RunXMLSpy
013 {
014 public static void main(String[] args)
015 {
016 // An instance of the application.
017 Application xmlSpy = null;
018
019 // Instead of COM error handling, use Java exception mechanism
020 try
021 {
022 // Start XMLSpy as COM server
023 xmlSpy = new Application();
024
025 // COM servers start up invisible, so make it visible
026 xmlSpy.setVisible(true);
027
028 // Locate samples installed with the product
029 String strExamplesFolder =
030 System.getenv("USERPROFILE") + "\\My Documents\\Altova\\XMLSpy2012\\Examples\\";
031
032 // Open two example files
033 xmlSpy.getDocuments().openFile(strExamplesFolder + "OrgChart.pxf", false);
034 xmlSpy.getDocuments().openFile(strExamplesFolder + "ExpReport.xml", false);
035
036 // Iterate through open documents and set view mode to 'Text'.
037 for (Document doc:xmlSpy.getDocuments())
038 if ( doc.getCurrentViewMode() != SPYViewModes.spyViewText)
039 doc.switchViewMode(SPYViewModes.spyViewText);
040
041 // An alternative iteration mode is index-based
042 // COM indices are typically zero-based
043 Documents documents = xmlSpy.getDocuments();
044 for (int i = 1; i <= documents.getCount();
045 i++)
046 {
047 Document doc = documents.getItem(i);
048
049 // Validation is one of the few methods to have output parameters.
050 // The class JVariant is the correct type for parameters in these cases.
051 // To get values back mark them with the by-reference flag.
052 JVariant validationErrorText = new
053
054 JVariant.JStringVariant("");
055
056 validationErrorText.setByRefFlag();
057 JVariant validationErrorCount = new
058
059 JVariant.JIntVariant(0);
060
061 validationErrorCount.setByRefFlag();
062 JVariant validationErrorXMLData = new
063
064 JVariant.JIDispatchVariant(0);
065
066 validationErrorXMLData.setByRefFlag();
067 if (!doc.isValid(validationErrorText, validationErrorCount, validationErrorXMLData))
068 System.out.println("Document" + doc.getName() + " is not wellformed - " + validationErrorText.getStringValue());
069 else
070 System.out.println("Document" + doc.getName() + " is wellformed.");
071 }
072
073 // The following lines attach to the document events using a default implementation
074 // for the events and override one of its methods.
075 // If you want to override all document events it is better to derive your listener class
076 // from DocumentEvents and implement all methods of this interface.
077 Document doc = xmlSpy.getActiveDocument();
078 doc.addListener(new
079
080 DocumentEventsDefaultHandler()
081 {
082 @Override
083 public boolean
084
085 onBeforeCloseDocument(Document i_ipDoc) throws AutomationException
086 {
087 System.out.println("Document
088
089 " + i_ipDoc.getName() + " requested closing.");
090
091 // Allow closing of document
092 return true;
093 }
094 });
095 doc.close(true);
096 doc = null;
097
098 System.out.println("Watch XMLSpy!");
099 }
100 catch (AutomationException e)
101 {
102 // e.printStackTrace();
103 }
104 finally
105 {
106 // Make sure that XMLSpy can shut down properly.
107 if (xmlSpy != null)
108 xmlSpy.dispose();
109
110 // Since the COM server was made visible and still is visible,
111 // it will keep running, and needs to be closed manually.
112 System.out.println("Now close XMLSpy!");
113 }
114 }
115 }