返回首页

ScriptEngine 进阶技巧3(JDK 6.0)

时间:2009-01-14 23:17来源:xiaowen 作者:xiaowen 点击:
这次感觉题目有些大了,因为上次说要写在ScriptEngine中操作XML,好像是个很大的题目,其实非常的easy。本想用其他技巧凑数,发现自己会的就这么多了。以后有机会再补充好了。 正题:由于JDK 6.0 中的ScriptEngine使用的简化版本的Rhino,简化就简化在E4X的部分。于是
  

这次感觉题目有些大了,因为上次说要写在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会在控制台打印



顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
发布者资料
小朱 查看详细资料 发送留言 加为好友 用户等级:超级会员 注册时间:2008-11-18 17:11 最后登录:2012-02-06 13:02
推荐内容
热点内容