首页 > PHP资讯 > Python培训 > ScriptEngine 进阶技巧3(JDK 6.0)

ScriptEngine 进阶技巧3(JDK 6.0)

Python培训

这次感觉题目有些大了,因为上次说要写在ScriptEngine中操作XML,好像是个很大的题目,其实非常的easy。本想用其他技巧凑数,发现自己会的就这么多了。以后有机会再补充好了。

正题:由于JDK 6.0 中的ScriptEngine使用的简化版本的Rhino,简化就简化在E4X的部分。于是就没办法直接用Script内置函数操作XML了。

但无所谓,ScriptEngine中有个函数importPackage(),可以想Java中的import一样导包,将Java class在Script中调用

例如,想在JavaScript中调用Date对象

importPackage(java.util);  
 
var date = new Date();  
println(data); //println 只在Java ScriptEngine中有

注意没有’*'号。这样,不仅仅Data对象,Script中没有的HashMap,LikedList等等都有了,而且调用的效率也不是非常低 (肯定是比Java代码要慢些的,但关键时候能救命)。importPackage有一个限制,不能importPackage(java.lang); 因为lang中的基本类型会和Script中的类型冲突。

既然能调用JDK中的库,调用第三方库也就不是问题了,毕竟都是用ClassLoader加载的,都是jar包,当一视同仁。

Java解析XMl比较流行的JDOM和Dom4j,虽然JDK中有XML的操作类,但比较原始,使用复杂。JDom和Dom4j上手容易,另外不要相信有些文章说的Dom4j有兼容问题,我用了一年多,三个系统平台来回使用也没出兼容问题。

想在ScriptEngine中使用Dom4j,首先还是要将Dom4j加入到Classpath(Eclipse就在项目中导入jar包)。

然后就可以用

importPackage(org.dom4j);         //接口
importPackage(org.dom4j.tree);   //类

导入到环境中

Example:

importPackage(org.dom4j);  
importPackage(org.dom4j.tree);  
 
doc = new DefaultDocument(); doc.addElement("Node").addElement("SubNode").addAttribute("ID","1");  
 
println(doc.asXML());

运行这个Script会在控制台打印

 

(常州java培训http://www.thinksite.cn/list-114-1.html)

本文由欣才IT学院整理发布,未经许可,禁止转载。