这次感觉题目有些大了,因为上次说要写在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)