XML-Scripting mit E4X

Normalerweise hätte man hierfür das Bean Scripting Framework (BSF) verwendet, aber die Entwicklung von BSF und Rhino verläuft nicht mehr ganz synchron: Das BSF-Projekt hat zwar im CVS Änderungen vorgenommen, aber noch kein offizielles Release herausgebracht, welches diese Änderungen enthält. Ältere Versionen von Rhino funktionieren damit zwar, nicht aber die E4X-fähigen, daher wird hier zum Aufrufen der Rhino Javascript-Engine auf Rhinos eigene Embedding-Funktionen zurückgegriffen.

DigTVs Konstrukter lädt die Scriptdatei und wertet sie aus. Dann sucht er die im Script definierten Funktionen.


Ein Context enthält die Thread-spezifischen Informationen für Rhino. Über die Funktion enter wird der aktuelle Thread mit einem Kontext verknüpft. Der Geltungsbereich (scope) ist ein scriptfähiges Objekt, welches alle Javascript-Funktionen und -Variablen enthält. Ein solcher Geltungsbereich ist unabhängig vom Kontext, der ihn erstellt hat. initStandardObjects liefert einen Geltungsbereich, indem die Standard-Javascript-Objekte definiert sind. Nun kann man ein Script auswerten.


Damit wird das Script gelesen. Man erinnere sich: Das Script besteht vor allem aus Funktionsdefinitionen, auf die man wie folgt zugreifen kann:


Die Methode getFunction ruft die get-Methode von scope auf, was die Abfrage von jedem benannten Objekt im ausgewerteten Javascript ermöglicht, und überprüft, ob auch ein Function-Objekt zurückgegeben wird und nicht zum Beispiel eine Variable. Sobald dies alles erledigt ist, muss man den erstellten Kontext wieder verlassen, um die Verknüpfung mit dem Thread zu lösen.

In der GetTV-Klasse wird ein Timer verwendet um den Code aufzurufen, so dass eine XML-Datei von einer erzeugten URL abgerufen und geparst wird, was ein XMLBeans-XMLObject liefert. Dann wird die process-Methode von DigTV aufgerufen:


Der Kontext wird betreten und die call-Methode der Javascript-Funktion aufgerufen, wobei das XMLObject als Parameter übergeben wird. Wie man sich erinnert, wird das XMLObject in der Datei digscript.js verpackt und verarbeitet. Sobald dies erledigt ist, wird der Kontext wieder verlassen. So einfach ist das, es gilt jedoch ein paar Fallstricke zu beachten. Derzeit ist es noch schwierig, die zugrunde liegenden XMLObjects aus E4X-XML-Objekten zu extrahieren, daher sollte man derzeit die Schnittstelle für XMLObjects noch als Einbahnstraße von Java zu Javascript betrachten.

Sobald der GetTV-Timer seine Aufgabe erledigt hat, ruft er die Funktion reportNow auf, um anzuzeigen, dass er fertig ist, und macht dann für 24 Stunden Pause.

Wenn man den Wert von finaldoc ausgibt, erhält man Folgendes:


Themenseiten: Anwendungsentwicklung, Software, XML

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu XML-Scripting mit E4X

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *