[Java6] Utiliser un script "Javascript" existant
Bonjour,
J'essai d'utiliser un script "js" existant au sein d'une application JAVA.
Le probl�me actuel est que ce script utilise l'objet "document" mis en place automatiquement par les browser representant la page html � traiter.
Cet objet �tant normalement un objet representant le standard w3c.dom j'ai bien essay� de placer un objet impl�mentant l'interface org.w3c.dom.Document dans le context du script mais sans succ�s.
Voici comment je charge le script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public static ScriptEngine createGooglePrettifyEngine() {
ScriptEngineManager scriptMgr = new ScriptEngineManager();
ScriptEngine jsEngine = scriptMgr.getEngineByName("JavaScript");
InputStream is = Prettifier.class.getResourceAsStream("prettify/prettify.js");
try {
Reader reader = new InputStreamReader(is);
jsEngine.eval(reader);
return jsEngine;
} catch (ScriptException ex) {
ex.printStackTrace();
}
return null;
} |
Ensuite voici comment je l'execute:
Code:
1 2 3 4 5 6 7 8
| InputStream is = .....;
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( is );
ScriptEngine prettifier = createGooglePrettifyEngine();
Invocable invocable = (Invocable)prettifier;
prettifier.put("document" , document );
String prettified = (String)invocable.invokeFunction("prettyPrint"); |
Le 1er probl�me constat� concerne les profils des m�thodes.
Par exemple la m�thode getElementsByTagName
- Dans org.w3c.dom.Document cette m�thode retourne une NodeList
- Dans le javascript cette m�thode retourne un array
Alors j'ai d�cid� d'utiliser la d�l�guation afin de creer un objet ayant des profils de m�thodes ad�quat. mais de fils en aiguille, ca me fait r��crire la puparts des objets DOM sans pour autant m'en sortir.
Alors comment mettre en place un objet "document" au context du script qui soit conforme ??